|
| 1 | +# Python package support |
| 2 | + |
| 3 | +The python-agent-driver ships CPython 3.12 with the full standard library and 102 explicitly installed top-level pip packages (transitive dependencies are also included). |
| 4 | + |
| 5 | +## Standard library |
| 6 | + |
| 7 | +The complete CPython 3.12 standard library is included. Commonly used modules: |
| 8 | + |
| 9 | +| Module | Description | |
| 10 | +|--------|-------------| |
| 11 | +| `ast` | Abstract syntax tree | |
| 12 | +| `cProfile` | Deterministic profiling | |
| 13 | +| `csv` | CSV file reading/writing | |
| 14 | +| `datetime` | Date and time types | |
| 15 | +| `email` | Email handling | |
| 16 | +| `filecmp` | File and directory comparison | |
| 17 | +| `fnmatch` | Unix filename pattern matching | |
| 18 | +| `glob` | Unix-style pathname expansion | |
| 19 | +| `imaplib` | IMAP4 protocol client | |
| 20 | +| `json` | JSON encoder/decoder | |
| 21 | +| `os` | OS interfaces | |
| 22 | +| `pathlib` | Object-oriented filesystem paths | |
| 23 | +| `platform` | Platform identification | |
| 24 | +| `profile` | Python profiler | |
| 25 | +| `re` | Regular expressions | |
| 26 | +| `shutil` | High-level file operations | |
| 27 | +| `socket` | Low-level networking | |
| 28 | +| `ssl` | TLS/SSL wrapper | |
| 29 | +| `subprocess` | Subprocess management (shimmed) | |
| 30 | +| `tempfile` | Temporary files and directories | |
| 31 | + |
| 32 | +Other standard library modules (`collections`, `itertools`, `functools`, `hashlib`, `struct`, `threading`, `typing`, `urllib`, `xml`, `zipfile`, `tarfile`, `sqlite3`, etc.) are also available. |
| 33 | + |
| 34 | +## Pre-imported packages (zero import cost) |
| 35 | + |
| 36 | +These packages are imported during `pyhl setup` warmup. They are already in `sys.modules` when your code runs, so `import` is instant. |
| 37 | + |
| 38 | +| Package | Import name | |
| 39 | +|---------|-------------| |
| 40 | +| beautifulsoup4 | `bs4` | |
| 41 | +| click | `click` | |
| 42 | +| cryptography | `cryptography` | |
| 43 | +| Jinja2 | `jinja2` | |
| 44 | +| lxml | `lxml` | |
| 45 | +| markdown-it-py | `markdown_it` | |
| 46 | +| numpy | `numpy` | |
| 47 | +| openpyxl | `openpyxl` | |
| 48 | +| pandas | `pandas` | |
| 49 | +| Pillow | `PIL` | |
| 50 | +| pydantic | `pydantic` | |
| 51 | +| pypdf | `pypdf` | |
| 52 | +| python-dateutil | `dateutil` | |
| 53 | +| python-docx | `docx` | |
| 54 | +| python-dotenv | `dotenv` | |
| 55 | +| python-pptx | `pptx` | |
| 56 | +| PyYAML | `yaml` | |
| 57 | +| tabulate | `tabulate` | |
| 58 | +| tenacity | `tenacity` | |
| 59 | +| tqdm | `tqdm` | |
| 60 | + |
| 61 | +## Shipped packages (import cost on first use) |
| 62 | + |
| 63 | +These packages are in the rootfs but not pre-imported. The first `import` pays the usual module load cost. |
| 64 | + |
| 65 | +| Package | Import name | |
| 66 | +|---------|-------------| |
| 67 | +| aiohttp | `aiohttp` | |
| 68 | +| altair | `altair` | |
| 69 | +| APScheduler | `apscheduler` | |
| 70 | +| bandit | `bandit` | |
| 71 | +| bokeh | `bokeh` | |
| 72 | +| boto3 | `boto3` | |
| 73 | +| builtwith | `builtwith` | |
| 74 | +| celery | `celery` | |
| 75 | +| chardet | `chardet` | |
| 76 | +| charset-normalizer | `charset_normalizer` | |
| 77 | +| coverage | `coverage` | |
| 78 | +| distro | `distro` | |
| 79 | +| docx2txt | `docx2txt` | |
| 80 | +| duckdb | `duckdb` | |
| 81 | + |
| 82 | +| exchange-calendars | `exchange_calendars` | |
| 83 | +| fabric | `fabric` | |
| 84 | +| Faker | `faker` | |
| 85 | +| fastapi | `fastapi` | |
| 86 | +| feedparser | `feedparser` | |
| 87 | +| fpdf2 | `fpdf` | |
| 88 | +| gensim | `gensim` | |
| 89 | +| gitpython | `git` | |
| 90 | +| google-api-python-client | `googleapiclient` | |
| 91 | +| hypercorn | `hypercorn` | |
| 92 | +| httpx | `httpx` | |
| 93 | +| hypothesis | `hypothesis` | |
| 94 | +| loguru | `loguru` | |
| 95 | +| markdown | `markdown` | |
| 96 | +| markdownify | `markdownify` | |
| 97 | +| mutagen | `mutagen` | |
| 98 | +| networkx | `networkx` | |
| 99 | +| nltk | `nltk` | |
| 100 | +| numpy-financial | `numpy_financial` | |
| 101 | +| odfpy | `odf` | |
| 102 | +| paramiko | `paramiko` | |
| 103 | +| pdfplumber | `pdfplumber` | |
| 104 | +| pdfrw | `pdfrw` | |
| 105 | +| pexpect | `pexpect` | |
| 106 | +| pipdeptree | `pipdeptree` | |
| 107 | +| platformdirs | `platformdirs` | |
| 108 | +| plotly | `plotly` | |
| 109 | +| polars | `polars` | |
| 110 | +| praw | `praw` | |
| 111 | +| pycountry | `pycountry` | |
| 112 | +| pydub | `pydub` | |
| 113 | +| pyflakes | `pyflakes` | |
| 114 | +| pygments | `pygments` | |
| 115 | +| pylint | `pylint` | |
| 116 | +| PyPDF2 | `PyPDF2` | |
| 117 | +| pytest | `pytest` | |
| 118 | +| pytest-asyncio | `pytest_asyncio` | |
| 119 | +| pytest-cov | `pytest_cov` | |
| 120 | +| pyxlsb | `pyxlsb` | |
| 121 | +| qrcode | `qrcode` | |
| 122 | +| radon | `radon` | |
| 123 | +| rapidfuzz | `rapidfuzz` | |
| 124 | +| rarfile | `rarfile` | |
| 125 | +| reportlab | `reportlab` | |
| 126 | +| requests | `requests` | |
| 127 | +| rope | `rope` | |
| 128 | +| ruff | `ruff` | |
| 129 | +| schedule | `schedule` | |
| 130 | +| scikit-learn | `sklearn` | |
| 131 | +| scipy | `scipy` | |
| 132 | +| scrapy | `scrapy` | |
| 133 | +| send2trash | `send2trash` | |
| 134 | +| slack-sdk | `slack_sdk` | |
| 135 | +| srt | `srt` | |
| 136 | +| statsmodels | `statsmodels` | |
| 137 | +| svgwrite | `svgwrite` | |
| 138 | +| sympy | `sympy` | |
| 139 | +| textblob | `textblob` | |
| 140 | +| trafilatura | `trafilatura` | |
| 141 | +| tweepy | `tweepy` | |
| 142 | +| typer | `typer` | |
| 143 | +| typing-extensions | `typing_extensions` | |
| 144 | +| uvicorn | `uvicorn` | |
| 145 | +| vulture | `vulture` | |
| 146 | +| watchdog | `watchdog` | |
| 147 | +| websockets | `websockets` | |
| 148 | +| wordcloud | `wordcloud` | |
| 149 | +| xlrd | `xlrd` | |
| 150 | +| xlsxwriter | `xlsxwriter` | |
0 commit comments