裸のパッケージがインストールされている任意のマシンで実行されるスタンドアロンの 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-install
with--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-deps
pip は wnated パッケージをインストールする前に依存関係を探すため、このオプションが必要です。--no-index
以前は、何かを見つけるために pip が PyPI にアクセスする必要がなく、そのステップでインターネット接続さえ必要ないことを示すために使用しました。