我通过sudo pip install virtualenv
安装了virtualenv并创建了一些环境。但现在我发现我的默认“全局”Python路径已经完全消失了。
在一个新终端中,我看到输出如:
user@localhost:~$ sudo pip install django
Requirement already satisfied (use --upgrade to upgrade): django in /usr/local/lib/python2.7/dist-packages
Cleaning up...
user@localhost:~$ ls /usr/local/lib/python2.7/dist-packages/django
bin contrib db forms __init__.py middleware template test views
conf core dispatch http __init__.pyc shortcuts templatetags utils
user@localhost:~$ python
Python 2.7.2+ (default, Oct 4 2011, 20:06:09)
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named django
>>>
这里发生了什么?如何修复我的全局Python安装,以便它可以看到已安装的软件包?
答案 0 :(得分:1)
这个问题是我自己的错。我不小心在我的主目录中运行了virtualenv --no-site-packages .
,创建了像〜/ bin,〜/ local,〜/ lib这样的文件夹,Python正在寻找那里的包,没有。删除这些目录可以解决问题。
答案 1 :(得分:0)
只需设置环境变量
PYTHONPATH=path1;path2;etc;
echo $PYTHONPATH
它应该使用您指定的路径
答案 2 :(得分:0)
你应该只使用sudo安装virtualenv,其他一切都应该没有sudo。
您还应该使用--no-site-packages
,因为这可以确保您的环境没有相互冲突的软件包版本。
这样做的正确方法是:
$ sudo apt-get install python-virtualenv
$ virtualenv --no-site-packages django_env
$ source django_env/bin/activate
(django_env)$ pip install -U django
如果您需要从全局路径中获取任何内容,则应将其安装在虚拟环境中。这样,当您freeze your environment时,您将只获得申请所需的内容。
您可以安装yolk
,它会列出您环境中的软件包:
(django_env)$ pip install yolk
(django_env)$ yolk -l