簡體   English   中英

當安裝了多個版本的python時,tox使用了錯誤版本的pip

[英]tox uses wrong version of pip when multiple versions of python are installed

我有一個支持python 2.4,2.6和2.7的構建盒。 這導致在他們自己的python安裝中根據需要安裝各種版本的pips。 我正在使用tox通過setup.py運行測試。

每當我運行{python2.7_installation_dir}/bin/python setup.py test ,都會生成一個.tox目錄。 在我運行的.tox目錄里面

py27/bin/pip --version 
pip 1.4.1 from {my_package}/.tox/py27/lib/python2.7/site-packages (python 2.7)


[buildbot@BUILD-SERV-01 .tox]# python2.7 
Python 2.7.6 (default, Nov 20 2013, 15:33:09) 
[GCC 4.1.2 20080704 (Red Hat 4.1.2-54)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pip
>>> pip.__version__
'1.5.2'

所以.tox目錄中的pip版本是1.4.1,其中為我用來執行setup.py test python解釋器安裝的pip是1.5.2。 這在運行測試時會導致錯誤,因為它使用pip來安裝目錄,其中一些來自外部源,而在1.5.2中我們需要為其中一個模塊明確設置--allow-external --allow-unverified標志。在1.4.1中不存在,每次通過tox調用測試時都會導致錯誤。

只有一個python2.7安裝,它是從源安裝的。 但我認為它正在運行pip 1.4.1,但現在已升級為使用1.5.2。 如何使用舊版本? 是否有任何.pth文件或可能留下的東西需要清理?

我可以放棄tox並直接運行pytests但我更喜歡通過tox運行它們。
如果您想查看日志,請告訴我,我可以使用日志更新問題。

tox在創建virtualenv中.tox/py27.tox/py35等取決於你與測試Python版本(即基於你envlisttox.ini或參數的-e選項)。 然后toxpip安裝到這個virtualenv,你的包以及你的包依賴的所有包中。

在進一步的運行中,為了節省時間,virtualenv被重用,只重新安裝了包(並且可能的依賴項已更新)。 除非您這樣做,否則您的pip將保留原始版本:

./tox/py27/bin/pip install -U pip

或重新初始化完整的virtualenv:

tox -r -e py27

(或者你的envlist所有python版本的所有.tox virtualenvs的tox -r )。

如果您還想分析如何設置tox ,請先致電:

tox -r -e py27 -vv

從輸出中可以看到重新創建的步驟:

py27 recreate: /src/site-packages/your/package/.tox/py27
  removing /src/site-packages/your/package/.tox/py27
setting PATH=/src/site-packages/your/package/.tox/py27/bin:/opt/python/2.7/bin:........
  /src/site-packages/your/package/.tox$ python -m virtualenv --python /opt/python/2.7.13rc1/bin/python py27 >/src/site-packages/your/package/.tox/py27/log/py27-0.log

現在,您轉到.tox目錄並重做virtualenv創建詳細信息:

cd .tox; rm -rf py27
python -m virtualenv --python /opt/python/2.7/13rc1/bin/python py27

從該日志中,您將看到它使用了最新的(緩存)版本的pip 由於您的正常安裝可以獲得最新的pip版本,因此不需要清理/更新pip的緩存。

使用這種方法:創建一個與setup.py相同級別的tox.ini文件,並使用它來告訴tox要運行哪些版本,比如這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM