2016-06-30 34 views
5

我使用tox来管理一些测试环境。我有一个依赖项(backports.ssl-match-hostname),我无法使用最新版本的pip下载,所以我需要恢复到pip 8.0.3以允许安装工作。Tox安装错误版本的点到它的虚拟env

我已将8.0.3版本的pip包含在我的tox.ini文件中用于依赖关系。

deps= 
    pip==8.0.3 

然而,当我运行

source .tox/py27/bin/activate 

,并进入虚拟测试环境中,然后运行

pip --version 

我结束了

8.1.2 

然而,外我的毒素环境,当我运行相同的命令,我得到

8.0.3 

有什么特别的是抓住PIP当TOX呢?为什么我无法指定我想用作依赖项的pip版本?

编辑:添加到此,它似乎好像我能够抓取依赖点pip == 8.0.3,但对于其他依赖项,它们仍然从用pip == 8.1.2启动的命令运行

因此,我需要能够抓住pip == 8.0.3,然后一旦安装,抓住一切。仍然不确定为什么TOX开始与PIP == 8.1.2

回答

3

这显然是含有预先选定的组Python包的,它指的是,其中之一是最新的和“virtualenvs” Python包的结果最大的点子。

我不知道这是否是这样做的首选方式,但我发现成功运行

pip uninstall virtualenv 

,然后与工作

pip install virtualenv==15.0.1 

随着版本重新安装“正确的“virtualenv版本,我能够运行我的tox命令

source .tox/py27/bin/activate 

并查看de PIP

pip --version 
pip 8.0.3 
+1

我发现卸载现有的virtualenv非常重要,因为pip捆绑在virtualenv_support软件包中,而未更新的virtualenv –

1

用于这种解决方法的首创版本是在这里:https://github.com/pypa/pip/issues/3666

虽然使它工作,我不得不写我的剧本“PIP画中画安装8.1.1 ==”。因此,要回顾:

添加pip.sh脚本到您的项目:

#!/bin/bash 
pip install pip==8.1.1 
pip install "[email protected]" 

添加到您的TOX。ini:

install_command = {toxinidir}/pip.sh {opts} {packages} 
0

我最近遇到了这个问题。我已经有一段时间了,但它只是没有注册,因为我有Python 2/3代码偶尔的失败。另一种可能发生的方式是,如果像我一样,你改变不同Python版本之间的virtualenv并且不清理。

检查/bin/Scripts查看python2是否指向python。如果virtualenv是Python 3,那么这将意味着python2实际上调用Python 3.反之亦然,如果你是virtualenv是Python 2并且你想测试Python 3代码。

+0

感谢您的回复。我真的不记得这个,它已经这么久了。 – Zack

相关问题