2016-06-30 33 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

相關問題