ここでは違いはないと思いますが、Python 2.7。
したがって、私の質問の一般的な部分は次のとおりです。各プロジェクトに個別のvirtualenv
を使用します。管理者アクセス権がなく、システムにインストールされたパッケージをいじりたくありません。当然、ホイールを使用してvirtualenv
s全体のパッケージのアップグレードとインストールを高速化したいと思います。特定のvirtualenv
内でのみ依存関係が満たされるホイールを作成するにはどうすればよいですか?
具体的には、発行
pip wheel -w $WHEELHOUSE scipy
失敗する
Building wheels for collected packages: scipy
Running setup.py bdist_wheel for scipy
Destination directory: /home/moritz/.pip/wheelhouse
Complete output from command /home/moritz/.virtualenvs/base/bin/python -c "import setuptools;__file__='/home/moritz/.virtualenvs/base/build/scipy/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" bdist_wheel -d /home/moritz/.pip/wheelhouse:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/home/moritz/.virtualenvs/base/build/scipy/setup.py", line 237, in <module>
setup_package()
File "/home/moritz/.virtualenvs/base/build/scipy/setup.py", line 225, in setup_package
from numpy.distutils.core import setup
ImportError: No module named numpy.distutils.core
----------------------------------------
Failed building wheel for scipy
Failed to build scipy
Cleaning up...
numpy
はグローバルに存在せず、virtualenv
がインストールされたnumpy
がアクティブな場合にホイールの構築が機能するため、特定のvirtualenv
のnumpy
のバージョン。
pandas
にも依存するnumpy
は、numpy
の独自のコンポーネントをインストールするように見えますが、それが最善のソリューションであるかどうかはわかりません。
numpy
を--user
とともにインストールし、それを使用してscipy
ホイールを構築できます。より良いオプションはありますか?
scipy
など)、他のパッケージ(numpy
など)に依存していますが、setup.py
はその要件を宣言していません/依存。注:理想的な解決策は、必要なパッケージ宣言を追加して、壊れたsetup.py
を修正することです。しかし、これはほとんど実行不可能であり、別の方法で対処する必要があります。
手順(scipy
を必要とするnumpy
のインストール)には2つのステップがあります
これは一度だけ行う必要があり、何度も再利用できます。
次のdownload-cache
の例のように、ホイールからのインストールが許可され、ホイールハウスディレクトリがセットアップされ、find-links
およびpip.conf
と重複するように、pip構成が適切に構成されている。
[global]
download-cache = /home/javl/.pip/cache
find-links = /home/javl/.pip/packages
[install]
use-wheel = yes
[wheel]
wheel-dir = /home/javl/.pip/packages
コンパイルする必要があるすべてのパッケージに必要なすべてのシステムライブラリをインストールする
必要なパッケージのホイールを作成します(numpy
)
$ pip wheel numpy
virtualenvをセットアップし(1回だけ必要)、それをアクティブにして、そこにインストールしますnumpy
:
$ pip install numpy
車輪の準備ができていると、迅速になります。
scipy
のホイールを作成します(virtualenvにあります)
$ pip wheel scipy
ここまでで、必要なホイールがホイールハウスに配置されます。
一時的なvirtualenvを削除できますが、それはもう必要ありません。
新しい仮想環境を作成し、アクティブにして、scipy
をインストールしたいと思っています。
新しいscipy
ホイールからscipy
を直接インストールすると、numpy
がないために失敗します。これを解決するには、最初にnumpy
をインストールします。
$ pip install numpy
そして、scipyで終わります
$ pip install scipy
私は推測しますが、これは1回の呼び出しで行うことができます(しかし、私はそれをテストしませんでした)
$ pip install numpy scipy
scipy
を繰り返しインストールする将来的には、scipy
またはnumpy
の新しいリリースがリリースされ、pipはホイールハウスにホイールがない最新バージョンをインストールしようとする可能性があります。
これまでに使用したバージョンを使用できる場合は、numpy
およびscipy
のバージョンを記載したrequirements.txt
を作成し、そこからインストールする必要があります。
これにより、実際に使用される前に必要なパッケージが存在することが保証されます。