安装Virtualenv后如何修复默认的Python路径

时间:2012-03-17 21:07:03

标签: python django virtualenv pip

我通过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安装,以便它可以看到已安装的软件包?

3 个答案:

答案 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