簡體   English   中英

pip冷凍時沒有顯示帶有pip的已安裝軟件包?

[英]Installed packages with pip are not shown in pip freeze?

我在Debian Wheezy上使用virtualenvpip 我有一個奇怪的問題,包似乎安裝好,但然后在virtualenv中不可見。

這是我的requirements.txt文件:

Django==1.7.7
psycopg2==2.5.4
django-geojson==2.6.0

如果我從我的virtualenv內部用pip安裝它,它說已經安裝了所有東西:

(.venv)$ sudo pip install -r requirements.txt
Requirement already satisfied (use --upgrade to upgrade): Django==1.7.7 in /usr/local/lib/python2.7/dist-packages (from -r requirements/base.txt (line 1))
Requirement already satisfied (use --upgrade to upgrade): psycopg2==2.5.4 in /usr/local/lib/python2.7/dist-packages (from -r requirements/base.txt (line 2))
Requirement already satisfied (use --upgrade to upgrade): django-geojson==2.6.0 in /usr/local/lib/python2.7/dist-packages (from -r requirements/base.txt (line 3))
Requirement already satisfied (use --upgrade to upgrade): six in /usr/local/lib/python2.7/dist-packages (from django-geojson==2.6.0->-r requirements/base.txt (line 3))
Cleaning up...

但是如果我做pip freeze以檢查安裝的內容,看起來pip認為我有一套完全不同的軟件包,特別是它沒有看到djgeojson

(.venv)$ pip freeze
Django==1.7.4
argparse==1.2.1
coverage==3.7.1
distribute==0.6.24
django-debug-toolbar==1.2.1
gunicorn==19.3.0
psycopg2==2.5.4
requirements==0.1
setproctitle==1.1.8
sqlparse==0.1.14
wsgiref==0.1.2

如果我啟動一個Python終端,Python就看不到djgeojson

為什么會這樣? 這很令人困惑。

您的問題是您已經安裝了sudo的需求,而且它們安裝在您的系統python庫文件夾中,而不是安裝在虛擬環境的venv庫中。

該怎么辦? 運行相同的命令,但這次沒有sudo: pip install -r requirements.txt 這將從虛擬環境運行pip並將軟件包安裝到正確的位置。

當您使用source path/to/my/venv/bin/acivate激活虛擬環境eq時,會更新當前用戶的路徑變量$PATH ,然后當您使用sudo運行某些內容時,您剛剛更新了這個新的$ PATH激活虛擬環境時不再相同。 當您打開一個新的shell窗口或以su或運行sudo作為其他用戶登錄時,會發生同樣的事情, $PATH變量不是全局系統變量。

暫無
暫無

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

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