在我的应用程序中,我想使用:
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的多个版本来处理这种情况?
Answers:
点不会帮助您。
您可以告诉它安装特定版本,但是它将覆盖另一个版本。另一方面,使用两个virtualenvs将使您在同一台计算机上安装两个版本,但不能同时使用它们。
最好的选择是手动安装这两个版本,方法是将它们以不同的名称放在Python路径中。
但是,如果您的两个库期望它们具有相同的名称(并且应该相同),则必须对其进行修改,以便它们使用一些导入别名来选择所需的版本,例如:
import dependencyname_version as dependencyname
当前尚无干净的方法来执行此操作。您所希望的最好的办法就是使这种黑客能够正常工作。
我宁愿放弃两个库之一,而用一个等效库替换它,或者修补它以接受新版本的依赖项并将修补程序返回给社区。
下载ea的源代码。包。将每个安装在其自己的单独文件夹中。例如。我有1.10版的软件包,但是想切换到开发版进行一些工作。我下载了dev模块的源代码:
git clone https://github.com/networkx/networkx.git
cd netwokrx
为此版本创建了一个文件夹:
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'
networkx
版本差异!
sys.path