私のアプリケーションでは、次のものを使用したいと思います。
packageA
、必要ですpackageX==1.3
packageB
、必要ですpackageX==1.4
packageX==1.5
packageX
この状況を処理するために、pipを使用しての複数のバージョンをインストールするにはどうすればよいですか?
私のアプリケーションでは、次のものを使用したいと思います。
packageA
、必要です packageX==1.3
packageB
、必要です packageX==1.4
packageX==1.5
packageX
この状況を処理するために、pipを使用しての複数のバージョンをインストールするにはどうすればよいですか?
packageX>=1.3,<2
しているはずでありpackageX>=1.4,<2
(アップストリームのpackageXがセマンティックバージョニングに従っていると仮定して)、ダウンストリームのアプリ開発者としてのあなたはピン留めして使用するのに問題はなくpackageX==1.5
、誰もが満足するでしょう。ここでは詳細
回答:
pipはこれを支援しません。
特定のバージョンをインストールするように指示できますが、他のバージョンをオーバーライドします。一方、2つのvirtualenvを使用すると、両方のバージョンを同じマシンにインストールできますが、同時に使用することはできません。
最善の策は、両方のバージョンを別の名前でPythonパスに配置して、手動でインストールすることです。
ただし、2つのライブラリが同じ名前を持っていることを期待している場合(そしてそうすべきである場合)、次のようなインポートエイリアスを使用して必要なバージョンを取得するように変更する必要があります。
import dependencyname_version as dependencyname
現在、これを行うためのクリーンな方法はありません。あなたが望むことができる最善のことは、このハックが機能することです。
2つのライブラリの1つを捨てて同等のものに置き換えるか、パッチを適用して新しいバージョンの依存関係を受け入れ、パッチをコミュニティに返したいと思います。
eaのソースをダウンロードします。パッケージ。それぞれを個別のフォルダにインストールします。例えば。私はバージョン1.10パッケージを持っていましたが、いくつかの作業のために開発バージョンに切り替えたいと思いました。devモジュールのソースをダウンロードし
git clone https://github.com/networkx/networkx.git
cd netwokrx
ました。このバージョンのフォルダーを作成しました
mkdir /home/username/opt/python
。次に、PYTHONPATH envvarを次のように設定しました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'
networkx
バージョンの違いと戦っているからこそここに来たんだ!
sys.path