簡體   English   中英

VirtualEnv/Pip 嘗試全局安裝軟件包

[英]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/activatebin/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 在 vi​​rtualenv 中安裝 Python 包)。

如果您的shebang沒問題,請確保在安裝到虛擬環境時不要使用“sudo -H”。

暫無
暫無

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

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