[英]Multiple python installations and pip, dude, where is my site-packages?
眾所周知,Mac OS 預裝了自己的 python。
建議似乎是不要管它,並使用自制軟件將新的 python 安裝到系統中。
我的問題是,在使用自制軟件安裝 python(和 pip)后,pip 正在將軟件包安裝到 Mac OS 站點軟件包中,而不是我自己的。 我已經確認我正在運行“自制”pip:
$ which pip
/usr/local/bin/pip
但是當我 pip 安裝一些東西時,我可以將它安裝在:
/lib/python2.7/site-packages
Pip 應該安裝在/usr/local/lib/python2.7/site-packages
除非我想念一些東西。
令人驚訝的是,使用-V
檢查會產生令人驚訝的結果:
pip -V
pip 7.1.0 from /usr/local/lib/python2.7/site-packages (python 2.7)
在運行pip install
后運行pip list
不會顯示據稱剛剛安裝但轉到錯誤站點包的包。
除此之外,我的 $PYTHONPATH 無法識別/lib/python2.7/site-packages
上安裝的軟件包,因此我無法使用它們。
為了增加更多的困惑,我決定使用 virtualenv,但令我驚訝的是,即使使用 pip 並激活 virtualenv 繼續安裝到/lib/python2.7/site-packages
而不是 virtualenv site-packages。
所以,不知何故,我最終得到了一個自制軟件 pip,它安裝了自制軟件站點包之外的軟件包和一個 python 解釋器,它不能使用 pip 安裝的軟件包。
你如何推薦我 go 關於找到根本原因並擁有流暢的 python 體驗? :)
我認為在你激活virtualenv之后你的python路徑應該指向那個環境的站點 - 包位置 - 如果沒有它可能沒有被激活。 只有在您激活它之后,才會運行pip,以便將其安裝在虛擬環境的站點包中。 如果它沒有被激活,它將進入它已經知道的任何其他網站包:
virtualenv venv
source /venv/bin/activate
如果您在步驟2之前執行第3步,則實際上並未使用您創建的虛擬環境,因此所有投注均已關閉 - 這可能是pip仍在安裝到舊位置的原因。
現在,我的總體建議是進一步使用pyenv
將特定版本的python安裝到/Users/username/.pyenv folder
並放棄默認的OSX和自制軟件包。 它很簡單,你可以通過簡單的命令發布來更改版本,輕松控制python的確切版本。
然后在python2或pyvenv
使用virtualenv,如果在python3中(不要與pyenv混淆)用自己的本地站點包構建虛擬環境來存儲pip模塊。 當您激活virtualenv時,$ PYTHONPATH將切換到特定位置。
那么流程將是:
完全控制您的環境!
首先,您可以嘗試使用pip install --upgrade pip
命令更新pip,這可能會也可能不會重定向您的pip路徑。
第二,我應該真正開始這個是在.bash_profile
或.zshrc
設置首選的pip可執行路徑,如果你使用的話。 這樣做(在Mac上)是按住Shift+Command+Period
來顯示隱藏文件,轉到User文件夾並使用文本編輯器打開.bash_profile/.zshrc
。 然后,將路徑/添加到/ bin所需的點。 像export PATH="User/Username/anaconda3/bin:$PATH"
或/usr/local/bin
或path/to/venv/bin
。 無論你最后編寫什么代碼都會覆蓋前一個代碼。
三,如果你不想改變你的默認點,而是想為這個特定的情況使用不同的版本,只需要包含pip可執行文件的完整路徑,如/usr/local/bin/pip list
或Users/Username/Desktop/venv/bin/pip install module
。
您可以通過調用此命令輕松找到您site-packages
目錄
python -c 'import site; print(site.getsitepackages())'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.