裸のパッケージがインストールされている任意のマシンで実行されるスタンドアロンの pip パッケージを作成する最良の方法は何ですか?
たとえば、ペリカンをパッケージ化して、python がインストールされているすべてのコンピューターで実行できるようにしたいとします(すべての依存関係が純粋な python であると仮定します)。
私の考えでは、バンドルとpip install --no-installトリックの 2 つの解決策があります。
使用bundles:
$ virtualenv venv
$ venv/bin/pip install pelican
$ venv/bin/pip freeze > all-packages.txt
$ venv/bin/pip bundle allpackages.pybundle -r all-packages.txt
(ペリカンが必要とするものだけを含むvenvクリーンな環境を作るために作成しました)all-packages.txt
そして、配布する必要があるだけで、次allpackages.pybundleのことを行う必要があるパッケージが必要な人はいます。
$ venv/bin/pip install allpackages.pybundle -r all-packages.txt
使用pip install --no-install:
pip はすべてのパッケージをディレクトリにダウンロードでき、それらのパッケージを配布できます。all-packages.txt配布する必要があるすべてのパッケージが含まれていると仮定すると、 --no-installwith--download-dirオプションを使用できます。
$ mkdir tarballs
$ venv/bin/pip install --no-install --download-dir=tarballs -r all-packages.txt
最後のトリックを使用し、pip を使用してこれらのパッケージをインストールする場合:
$ venv/bin/pip install --no-deps --no-index tarballs/*
no-depspip は wnated パッケージをインストールする前に依存関係を探すため、このオプションが必要です。--no-index以前は、何かを見つけるために pip が PyPI にアクセスする必要がなく、そのステップでインターネット接続さえ必要ないことを示すために使用しました。