簡體   English   中英

未使用 pip 在 vi​​rtualenv 中安裝 Python 包

[英]Python packages not installing in virtualenv using pip

我在安裝 twisted 時遇到問題

pip --version

來自 /home/chris/GL/GLBackend/gleenv/lib/python2.7/site-packages/pip-1.1-py2.7.egg 的 pip 1.1(python 2.7)

創建虛擬環境

chris@chris-mint ~/GL/GLBackend $ sudo virtualenv -p python2.7 glenv

使用解釋器 /usr/bin/python2.7 運行 virtualenv 在 glenv/bin/python2.7 中新的 python 可執行文件還在 glenv/bin/python 中創建可執行文件 安裝分發...... ..................................................... ..................................................... ..................................................... .......................完畢。 安裝 pip……完成。

以防萬一,我將啟用所有權限

chris@chris-mint ~/GL/GLBackend $ sudo chmod -R 777 glenv

chris@chris-mint ~/GL/GLBackend $ source glenv/bin/activate


(glenv)chris@chris-mint ~/GL/GLBackend $ pip freeze

argparse==1.2.1 分發==0.6.24 wsgiref==0.1.2

twisted 未在此處列出為已安裝

(glenv)chris@chris-mint ~/GL/GLBackend $ sudo pip install twisted

已滿足要求(使用--upgrade 升級):扭曲在/usr/local/lib/python2.7/dist-packages 已滿足要求(使用--upgrade 升級):zope.interface>=3.6.0 in / usr/local/lib/python2.7/dist-packages (來自twisted) 要求已經滿足(使用--upgrade 升級):分發在/usr/local/lib/python2.7/dist-packages (來自zope.interface >=3.6.0->twisted) 清理... (glenv)chris@chris-mint ~/GL/GLBackend $ pip uninstall twisted 無法卸載要求 twisted,未安裝 存儲完整登錄 /home/chris/.pip/點子日志

但是當我安裝它時,它說它已經安裝了。 強制安裝:

sudo pip install -I twisted

下載/解壓twisted 下載Twisted-12.3.0.tar.bz2 (2.6Mb):下載2.6Mb 運行setup.py egg_info 以獲取twisted 包。 . .

成功安裝了twisted zope.interface 分發清理...

然而它仍然沒有安裝

(glenv)chris@chris-mint ~/GL/GLBackend $ pip freeze

argparse==1.2.1 分發==0.6.24 wsgiref==0.1.2

**當我嘗試運行使用 twisted 的 Python 腳本時,我收到一條錯誤消息,指出未安裝 twisted。 那是:

ImportError:沒有名為 twisted.python 的模塊**

這里的問題是您不應該使用sudo 這導致pip嘗試安裝到/usr/local/lib而不是~/glenv/lib (而且,因為您使用了sudo ,所以成功完成了此操作,但這對您沒有幫助,因為您不允許在venv中使用系統站點包。)

sudo pip可能導致此問題的原因有多種,但最可能的原因是:在大多數系統(包括我可以立即訪問的各種Mac和RHEL / CentOS盒)上, sudoers文件將重置您的環境,然后重新添加在少數列入白名單的環境變量中。 這意味着,當您使用sudo pip ,它將看不到virtualenv設置的環境變量,因此它將退回到執行默認操作並安裝到系統Python中,而不是venv中。

但實際上, 為什么會這樣並不重要。 答案是相同的:只需執行pip install而不是sudo pip install

需要注意的是,你想要刪除的sudovirtualenv通話,因為這很可能導致VENV被錯誤地設置了(這就是為什么你需要的sudo chmod ,這不會是必要的,否則)。 在用戶主目錄下安裝內容的全部目的是,您可以使用普通用戶權限來進行安裝。

附帶說明,您可能還想升級到較新的virtualenv / pip ,因為1.8和1.2進行了一些錯誤修復和改進。 但是我驗證了即使使用最新版本(1.8.4和1.2.1),我也遇到了與您完全相同的問題,因此我認為這與您無關。

sudo pip在這里引起了問題。 它會將軟件包安裝在您的系統中,而不是您創建的虛擬環境中。 因此,當它說要求已經滿足時。 嘗試添加它指向的目錄。 在您嘗試安裝時,您的情況是/usr/local/lib/python2.7/dist-packages

如果它在/usr/local/lib/... ,它不指向您的 virtualenv 文件夾,那么它將安裝在您的系統中。 否則,在正確的情況下,它看起來像這樣/usr/local/lib/..../<name of your virtualenv>/lib

您始終可以使用which pythonwhich pip類的命令來查看它們是否都在使用我們虛擬環境的占位符。

暫無
暫無

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

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