簡體   English   中英

多個 python 安裝和 pip,伙計,我的站點包在哪里?

[英]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,以便將其安裝在虛擬環境的站點包中。 如果它沒有被激活,它將進入它已經知道的任何其他網站包:

  • 第1步:創建虛擬環境
    • 一個... ... virtualenv venv
    • 這只做一次!
  • 第2步:激活虛擬環境
    • source /venv/bin/activate
    • 每次想要使用此虛擬環境時都需要做
  • 第3步:運行pip命令,觀察它們是否安裝在虛擬env站點包中!

如果您在步驟2之前執行第3步,則實際上並未使用您創建的虛擬環境,因此所有投注均已關閉 - 這可能是pip仍在安裝到舊位置的原因。

現在,我的總體建議是進一步使用pyenv將特定版本的python安裝到/Users/username/.pyenv folder並放棄默認的OSX和自制軟件包。 它很簡單,你可以通過簡單的命令發布來更改版本,輕松控制python的確切版本。

然后在python2或pyvenv使用virtualenv,如果在python3中(不要與pyenv混淆)用自己的本地站點包構建虛擬環境來存儲pip模塊。 當您激活virtualenv時,$ PYTHONPATH將切換到特定位置。

那么流程將是:

  • 使用pyenv下拉並切換到您想要使用的特定版本的python - 覆蓋自制程序和OSX版本。
  • 創建你的vitrualenv。 這將創建一個bin,它將鏈接到您在上一步中指定的pyenv python堆棧。
  • 激活虛擬環境,然后繼續。

完全控制您的環境!

首先,您可以嘗試使用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/binpath/to/venv/bin 無論你最后編寫什么代碼都會覆蓋前一個代碼。

三,如果你不想改變你的默認點,而是想為這個特定的情況使用不同的版本,只需要包含pip可執行文件的完整路徑,如/usr/local/bin/pip listUsers/Username/Desktop/venv/bin/pip install module

您可以通過調用此命令輕松找到您site-packages目錄

python -c 'import site; print(site.getsitepackages())'

暫無
暫無

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

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