我正在嘗試創建一個 virtualenv 並安裝專案中的requirements.txt 中的軟體包。
當我創建環境時,我檢查 python 和 pip 確實來自該環境。也就是說,當我跑步時:
source ./virtualenv/bin/activate
which pip
which python
我得到的結果指向位於 virtualenv 目錄內的二進位文件
然後我繼續安裝軟體包:
pip install -r requirements.txt
pkg-resources=0.0.0
有一段時間, requirements.txt 中的行給我帶來了麻煩。結果,由於 Ubuntu 中的一個錯誤,該行輸入到該檔案中。您可能會猜到,我是在 Ubuntu 計算機上建立此文件的。
一旦我劃掉該線,安裝就會繼續。
但是,當我在安裝後運行 pip list 時,該列表僅包含
pip (8.1.1) pkg-resources (0.0.0) setuptools (20.7.0)
更重要的是,如果我停用 virtualenv 並在全域範圍內執行 pip list,我會看到所有相依性都已全域安裝。
這裡有兩個問題。一——這是最引人注目的——為什麼會發生這種情況?第二個問題是我如何清理我的全域包裹並卸載現在駐留在其中的污染物?
附錄:
另一個奇怪的行為包括以下內容。當我嘗試sudo pip uninstall -r requirements.txt
從 virtualenv 中執行並希望反轉全域安裝時,出現以下錯誤:
無法卸載要求 aldryn-apphooks-config,未安裝
也就是說,當我嘗試卸載時,pip 會嘗試在 virtualenv 中尋找套件。
另一方面,當我停用 virtualenv 時,我可以使用相同的命令成功地從全域安裝中卸載軟體包。
不知何故,與 pip uninstall 指令相比,pip install 指令在 Ubuntu 上的運作方式有所不同。他們在不同的地方“尋找”包裹。