[英]VirtualEnv/Pip trying to install packages globally
編輯 #2找到解決方案; 見下文。
我正在使用 VirtualEnv 在 Flask 中編寫一個小應用程序。 這遠不是我第一次這樣做,但是這次和過去兩次我都嘗試過,我遇到了同樣的問題。 當我. flask/bin/activate
. flask/bin/activate
並嘗試安裝一個包——例如pip install flup
它一直在全局安裝,而不是在 VirtualEnv 中。 奇怪的是,它只發生在我deactivate
,而且它的表現不一致。
也就是說,如果我一次完成,我似乎能夠安裝我需要的所有東西,甚至偶爾在我deactivate
,但在一定時間間隔后它就會停止工作並開始嘗試安裝到我的全局 Python site-packages
. (當然,它在執行此操作時也會請求權限。在我理解發生了什么之前,我試圖用sudo
強制它,以為我是通過不小心sudo virtualenv flask
-ing 或其他東西將它帶到自己身上的,但不,它是由於其他原因走向全球。)
我沒有做任何有趣的事情,比如使用--system-site-packages
參數,並且在它開始發生之前我沒有在我的 VirtualEnv 配置中改變任何東西。 第一次發生時,我把它歸結為僥幸。 現在它變得非常令人惱火,因為我沒有心情每次都卸載並重新安裝它,或者祈禱我會在引導腳本中考慮我需要的一切。
我不包括任何錯誤消息,因為它們不是(或似乎不是)特別有價值; 這只是requirement already satisfied
了一遍又一遍地對我大喊大叫。
編輯 #1我正在稍微篩選問題,但我仍然沒有解決方案。 我在同一個目錄中創建了一個新的 Flask 項目, cd
-ed 進入它,激活它的 VirtualEnv 等,然后運行which pip
。 這是新的 VirtualEnv 的 pip —— 正確的 pip。 我停用, cd
-ed 到我的原始項目,激活 VirtualEnv,並運行which pip
。 它吐出另一個項目的——新項目的——pip。 我rm -r
-ed 新的測試項目,回到原來的,再次運行which pip
,它吐出/usr/local/bin/pip
。 哦。 行。
編輯 #2:解決方案我可能還沒有找出確切的原因,但我確實找到了解決方案。 bin/activate
和bin/pip
腳本本身被以某種方式改變了,可能是因為意外同時運行了兩個 VirtualEnv(?)。 也許這只是巧合,它在以前從未發生過之后連續發生了 3 次。 不知道。
我cat
-ed activate
果然,在第 42 行,是
VIRTUAL_ENV="/Users/chaseries/blueprint/python/flask2/flask"
代替
VIRTUAL_ENV="/Users/chaseries/blueprint/python/flask/flask"
我改變了它,再次運行which pip
,並得到了正確的結果。 嘗試安裝,得到一個堆棧跟蹤,導致我進入bin/pip
,並發現它的 shebang 是錯誤的。 將其更改為正確的路徑,一切正常。
我有同樣的問題。 對我來說,原因是我的 virtualenv 路徑中有空格。
將 virtualenv 移動到無空間的路徑解決了這個問題。
如果您已重命名包含 ENV - 虛擬環境目錄的項目目錄,請嘗試清除 ENV 目錄並重新創建 virtualenv 並激活它並重新安裝 pip 依賴項。
TL-DR; 刪除虛擬環境,創建新環境,激活它並再次發出 pip 命令。
手動編輯大量文件並檢查文件后出現了相同的問題,我開始使用該工具。 對我而言,解決方案是包括“無站點包”。 您可以在這里查看我的解釋: https : //stackoverflow.com/a/58978791/6669357
使用此鏈接( 未使用 pip 在 virtualenv 中安裝 Python 包)。
如果您的shebang沒問題,請確保在安裝到虛擬環境時不要使用“sudo -H”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.