web-dev-qa-db-ja.com

pipを使用してパッケージの複数のバージョンをインストールする

私のアプリケーションでは、次のものを使用します。

  • packageA、これにはpackageX==1.3が必要です
  • packageB、これにはpackageX==1.4が必要です
  • packageX==1.5

この状況を処理するために、pipでpackageXの複数のバージョンをインストールするにはどうすればよいですか?

61
limboy

pipはこれに役立ちません。

特定のバージョンをインストールするように指示できますが、他のバージョンは上書きされます。一方、2つのvirtualenvを使用すると、両方のバージョンを同じマシンにインストールできますが、同時に使用することはできません。

最善の方法は、Pythonパスに別の名前を付けて、両方のバージョンを手動でインストールすることです。

ただし、2つのライブラリが同じ名前を持っていることを期待している場合は(そうすべきです)、次のようなインポートエイリアスを使用して必要なバージョンを取得するように変更する必要があります。

import dependencyname_version as dependencyname

現在、これを行うための明確な方法はありません。このハックが機能することを期待できます。

2つのライブラリのうちの1つを捨てて同等のものに置き換えるか、パッチを適用して依存関係の新しいバージョンを受け入れ、パッチをコミュニティに返します。

45
e-satis

Eaのソースをダウンロードします。パッケージ。それぞれを個別のフォルダーにインストールします。例えば。バージョン1.10のパッケージがありましたが、いくつかの作業のために開発バージョンに切り替えたいと思いました。 devモジュールのソースをダウンロードしました:git clone https://github.com/networkx/networkx.gitcd netowkrxこのバージョンのフォルダーを作成しました:mkdir /home/username/opt/python、次にPYTHONPATH env varをexport PYTHONPATH=/home/username/opt/python/lib/python2.7/site-packages/に設定しました。次に、python setup.py install --prefix=/home/username/opt/pythonを使用してインストールしました

さて、私のPYTHONPATHがこの他のsite-packagesフォルダーを指しているので、コマンドラインでpythonを実行し、新しいモジュールをインポートすると、動作します。 PYTHONPATHからの新しいフォルダー。

>>> import networkx as nx
>>> nx.__version__
'2.0.dev_20151209221101'
12
sAguinaga