2017-08-11 16 views
5

好吧,這真是奇怪。我正在幫助Mac(Yosemite)上的同事,運行/usr/bin/python(2.7.10)中提供的Python可執行文件。我使用運輸的easy_install來安裝pip(9.0.1),其存放在/usr/local/bin中,其中shebang行#!/usr/bin/python。然後我用pip安裝一些模塊,包括six,才發現,PIP和蟒蛇不知何故不同意該模塊的版本:Pip和Python對模塊位置不同意

尾的 pip install -vvv -U six

輸出 python -c 'import six; print six.__version__'
Installed version (1.10.0) is most up-to-date (past versions: 0.9.0, 0.9.1, 0.9.2, 1.0.0, 1.1.0, 1.2.0, 1.3.0, 1.4.0, 1.4.1, 1.5.0, 1.5.1, 1.5.2, 1.6.0, 1.6.1, 1.7.0, 1.7.1, 1.7.2, 1.7.3, 1.8.0, 1.9.0, 1.10.0) 
Requirement already up-to-date: six in /Library/Python/2.7/site-packages 

1.4.1 

相關位置:

$ type pip 
pip is /usr/local/bin/pip 
$ type python 
python is /usr/bin/python 
$ head -n 1 $(type -p pip) 
#!/usr/bin/python 

$PYTHONPATH未在環境中設置。但他們仍然在不同的地方看。正如您從pip輸出中看到的,它正在查看/存儲在/Library/Python/2.7/site-packages/中。但如果我循環了sys.path,我發現six的第一個地方是/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/

那麼斷開連接在哪裏呢?

+0

你的同事在El Capitan的Mac嗎?也許與[this]有關(https://github.com/FindHotel/s3keyring/issues/6) –

+0

他正在運行Yosemite,但它看起來像一個類似的情況 –

+0

[This](https://github.com/pypa/點/問題/ 3165#issuecomment-146666737)也許你可以幫助 –

回答

1

問題原來是加載路徑的順序。在我的Sierra機器上(我證實我能夠爲默認的/usr/bin/python安裝新的six),/Library/Python/2.7/site-packages來到之前/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/pythonsys.path。但是在同事的機器上,/Library/Python/2.7/site-packages是最後一個條目,位於Extras文件夾之後,所以安裝的pip版本被系統安裝屏蔽。

我懷疑這是由塞拉利昂修復的優勝美地Python安裝的問題,但無論如何我都看不到容易修復的問題。所以選項是安裝一個單獨的Python實例(我的首選項;我通常使用pyenv)或手動設置PYTHONPATH以將site-packages放在前面。或者升級到更新的macOS,我想。

感謝大家幫忙解決這個問題。