【问题标题】:How to fix default Python path after installing Virtualenv安装 Virtualenv 后如何修复默认 Python 路径
【发布时间】:2012-03-17 21:07:03
【问题描述】:

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

【问题讨论】:

  • 我很好奇如果你运行 which python 会发生什么,sys.path 在 Python 中的样子,以及 sudo python 是否知道 django 包。
  • @zigg,好主意。这些会帮助我更快地发现问题。

标签: python django virtualenv pip


【解决方案1】:

这个问题是我自己的错。我不小心在我的主目录中运行了virtualenv --no-site-packages .,创建了~/bin、~/local、~/lib 之类的文件夹,而Python 正在那里寻找它的包,而那里没有。删除这些目录可以解决问题。

【讨论】:

    【解决方案2】:

    只需设置环境变量

    PYTHONPATH=path1;path2;etc;
    echo $PYTHONPATH
    

    它应该使用你指定的路径

    【讨论】:

    • 我知道如何设置我的 PYTHONPATH。我在问为什么一开始就完全消失了?
    【解决方案3】:

    您应该只使用 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
    

    【讨论】:

    • 我不明白蛋黄的意义。 pip freeze | grep 不能做什么?
    • 即使您没有 pip,蛋黄也可以使用。除了列出软件包之外,它还有很多其他功能 - 例如,yolk -U 检查 PyPi 是否对已安装的软件包有任何更新。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多