我开始在我的项目中使用 virtualenv 和 virtualenvwrapper 。
使用workon
命令激活virtualenv后,我使用pip install -U <package>
安装了以下软件包:
$ lssitepackages
django pip
Django-1.3-py2.7.egg-info pip-1.0.1-py2.7.egg-info
easy-install.pth setuptools-0.6c11-py2.7.egg
fabric setuptools.pth
Fabric-1.0.1-py2.7.egg-info south
geopy South-0.7.3-py2.7.egg-info
geopy-0.94.1-py2.7.egg-info
这里的问题是(在激活virtualenv的情况下运行命令):
$ whereis python
python: /usr/bin/python2.6 /usr/bin/python /usr/bin/python2.7 /etc/python2.6 /etc/python /etc/python2.7 /usr/lib/python2.6 /usr/lib/python2.7 /usr/lib64/python2.6 /usr/lib64/python2.7 /usr/local/lib/python2.6 /usr/local/lib/python2.7 /usr/include/python2.6 /usr/include/python2.7 /usr/share/python /usr/share/man/man1/python.1.gz
$ whereis django-admin
django-admin: /usr/bin/django-admin /usr/local/bin/django-admin.py /usr/share/man/man1/django-admin.1.gz
$ whereis fab
fab: /usr/local/bin/fab
我的 virtualenv 它没有使用本地软件包!
如何强制virtualenv使用本地Python和本地版本的packges而不是我的机器包?
更新 - 可能的解决方案
我用mkvirtualenv --no-site-packages <name>
创建了一个新的virtualenv,现在我得到了这些输出:
$ which python
/home/user/.virtualenvs/VIRTUALENVNAME/bin/python
$ which django-admin
/usr/bin/django-admin
$ which django-admin.py
/home/user/.virtualenvs/VIRTUALENVNAME/bin/django-admin.py
$ which fab
/home/user/.virtualenvs/VIRTUALENVNAME/bin/fab
听起来它现在正在工作......除了“django-admin”命令。
答案 0 :(得分:7)
尝试使用以下方法安装virtualenv:
mkvirtualenv --no-site-packages
在没有任何外部python库的情况下创建virtualenv
答案 1 :(得分:1)
您正在使用两个不同的命令来查找正在使用的Python版本。第一次,你使用“whereis”,第二次使用“which”。 “whereis”不是您要用于识别将在您的环境中运行的版本的命令。
来自“whereis”的手册页:
whereis查找指定文件的源/二进制和手册部分。 提供的名称首先被剥离了前导路径名组件 和.ext形式的任何(单个)尾随扩展名,例如.c。 s的前缀。使用源代码控制也是如此 处理。然后尝试在a中找到所需的程序 标准Linux位置列表。
这最后一行非常重要。 whereis“试图在标准Linux位置列表中找到所需的程序。”当你使用virtualenv时,那个版本的Python不在标准的Linux中。
改为使用“which”,就像你第二次做的那样。摘自“哪个”:
的手册页返回文件(或链接)的路径名,这些路径名将是exe- 在当前的环境中,
这是您想要用来确定哪个版本的Python将在您的virtualenv中运行的那个。