編輯#2找到解決方案;見下文。VirtualEnv/Pip嘗試全局安裝軟件包
我正在使用VirtualEnv在Flask中編寫一個小應用程序。這是我第一次做這件事,但這次和過去兩次我試過我遇到過同樣的問題。當我. 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
- 激活了它的VirtualEnv等,然後運行which pip
。這是新的VirtualEnv的點子 - 正確的點子。我停用了,cd
-ed我的原始項目,激活VirtualEnv,並運行which pip
。它吐出了另一個項目 - 新的 - pip。我在rm -r
- 新的測試項目,回到原來的,再次運行which pip
,它吐出/usr/local/bin/pip
。哦。好。
編輯#2:解決方案我可能沒有找到確切的原因,但我找到了解決方案。 bin/activate
和bin/pip
腳本本身發生了某種變化,可能是因爲偶然在同一時間運行兩個VirtualEnvs(?)。也許這只是巧合,它以前從未發生過,它連續發生三次。不知道。
我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是錯誤的。把它改成正確的道路,一切都完美無瑕。
在沒有sudo的情況下運行它時,它如何獲得安裝在全局python上的權限?還是在嘗試和失敗? –
這是嘗試和失敗,但我不明白爲什麼它試圖擺在首位。 –
只需運行virtualenv的pip及其完整路徑(即不要依賴於搜索可執行文件路徑),甚至不需要激活環境。它會做正確的事情。 –