我在Debian Wheezy上使用virtualenv
和pip
。我遇到了一个奇怪的问题,即安装包似乎安装成功,但在虚拟环境中却不可见。
这是我的requirements.txt
文件:
Django==1.7.7
psycopg2==2.5.4
django-geojson==2.6.0
如果我在虚拟环境中使用
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
。为什么会这样发生?这很令人困惑。
/usr/local/lib/python2.7/dist-packages
,但这个路径不在sys.path
上。但是为什么pip会选择将软件包安装到自己路径之外的地方呢? - Richardsudo pip freeze
,我会看到相同版本的软件包。那么pip
看到的内容是否取决于您作为哪个 Linux 用户运行它?这很令人惊讶。 - Richard