pip-auto
import するだけ。無いモジュールは勝手に入る。
pip install pip-auto
これだけ。あとは普通に Python を書いて動かすと、足りないモジュールがその場で PyPI から入ってそのまま動き続けます。
import pyfiglet # 入ってなくても OK
from PIL import Image # import 名と pip 名が違っても OK(pillow を入れる)
import cv2 # opencv-python を入れる
print(pyfiglet.figlet_format("hello"))
[autopip] 'pyfiglet' が無い → pyfiglet を入れる
[autopip] pyfiglet==1.0.4 入った (2.51s)
何が便利か
- 入れるだけで有効:
pip install pip-autoで ON。pip uninstall pip-autoで完全に元通り - 名前を当てる:
PIL→pillow、cv2→opencv-python、google.generativeai→google-generativeaiなど。 候補は wheel の中身まで確認してから入れる(同名の別物は入れない) - 速い: pip を使わない自前インストーラ。依存を並列で先読みして解決し、全ファイルを 1 回でまとめて展開。 2 回目以降はキャッシュからハードリンクを張るだけ(pip の 5〜10 倍程度)。Python の起動への上乗せは約 5ms
- 安全: 人気パッケージにそっくりな名前(タイポスクワット)や、公開されたばかりの無名パッケージは自動では入れない。 失敗したら途中まで入ったものも含めて全部元に戻す
- ライブラリの「無くても動く」import は無視:
try: import x except ImportError:やimportlib.util.find_spec("x")、呼び出し元の try で受け止める書き方(IPython など)では入れない - Jupyter / IPython でもそのまま動く
スクリプトに書いておく
# /// script
# dependencies = ["requests<3", "rich"]
# ///
import requests, rich # PEP 723 ブロックがあれば最初にまとめて入れる
import numpy # autopip: numpy<2 ← 行末コメントでバージョン指定
コマンド
| コマンド | 内容 |
|---|---|
autopip run x.py |
足りないものを先にまとめて入れてから実行(--venv で隣に .venv を作ってそこで) |
autopip lock x.py |
全部のバージョンと sha256 を固定した x.autopip.lock を作る。以後 run はその通りに入れる |
autopip freeze x.py --requirements / --pep723 |
使っているものを書き出す |
autopip install ... |
pip install と同じ書き方: -r requirements.txt(-r入れ子・-c・--hash・-i)/ -e . / -U / --no-deps / --force-reinstall / --dry-run / -t DIR / --user |
autopip uninstall pkg... |
消す(-r ファイル も可) |
autopip list [--outdated] / show pkg |
入っているもの / 新しい版が出ているもの / 詳細 |
autopip upgrade pkg... / --all |
まとめて最新に(--dry-run で見るだけ) |
autopip freeze |
環境全体を pip freeze 形式で |
autopip clean [--days 30] [--yes] |
しばらく使ってない自動インストール品を掃除 |
autopip gui |
ブラウザで一覧・掃除・設定(127.0.0.1 のみ) |
autopip check pkg |
安全チェックだけ |
autopip config ask true |
入れる前に毎回確認する |
autopip off / on |
一時的に止める / 戻す |
環境変数 AUTOPIP_DISABLE=1 でその場だけ無効にできます。
設定 (autopip config キー 値)
ask…trueで入れる前に確認(端末から直接聞く。答えられない環境では入れない)safety…strict(既定)/warn/offlink_mode…hardlink(既定・速い)/copy(環境ごとに別ファイル)index_url/extra_index_urls… PyPI 以外のインデックス(pip.ini/PIP_INDEX_URLも読みます)
注意
- 自動で入れるのは PyPI 上のパッケージです。何を入れたかは毎回ログに出ます
- ハードリンクモードでは同じファイルを複数の環境で共有します。入れたファイルを直接書き換える使い方をするなら
link_mode copyに - Python 3.10 以上。Windows で主に確認しています(Linux / macOS の wheel 選びは packaging に任せています)
English
Just import it — missing modules are installed from PyPI on the fly.
pip install pip-auto enables it for that Python (a .pth hook); pip uninstall pip-auto removes it completely.
It maps import names to distribution names (PIL→pillow, cv2→opencv-python), verifies the wheel really contains the module,
blocks typosquats / brand-new unknown packages, resolves with backtracking, and installs everything in one parallel batch
with hard links from a local cache. Library-internal optional imports are left alone. Supports PEP 723 script metadata,
lock files with sha256, autopip gui, autopip clean, and autopip freeze.
Metadata
Release files for pip-auto 0.4.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pip_auto-0.4.1.tar.gz | 67.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pip_auto-0.4.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 127.9 kB
Release files / pip_auto-0.4.1.tar.gz
| Download URL | pip_auto-0.4.1.tar.gz |
|---|---|
| Size | 67.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
52aaa8001fcf4144f6b980bdd9255f9fc207cb92cbc997abd9381e4d5bd630a9
|
|
BLAKE2b-256 checksum How to use checksums |
6e6eb69d83326ed2389607b0c17242a2c2bc1fc5ca3e3f632d2768667de3f6fa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.5
|
Release files / pip_auto-0.4.1-py3-none-any.whl
| Download URL | pip_auto-0.4.1-py3-none-any.whl |
|---|---|
| Size | 60.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e6f7e85ef1ffe07ecc6e8bab938b81c4c5e3e34b5548609cda3b79aa8806202e
|
|
BLAKE2b-256 checksum How to use checksums |
4d79c0f1eacdf11e90a79060942ae5ed2b12d146138cb56f48a0c97a02f0b907
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.5
|