【问题标题】:django installation: cannot use pip to install django on linux(ubuntu)django 安装:无法使用 pip 在 linux(ubuntu) 上安装 django
【发布时间】:2013-11-06 22:10:01
【问题描述】:

我尝试使用 pip 在 ubuntu 上安装 django。但不幸的是,我遇到了这样的错误。有人可以解释一下并告诉我一些解决方法吗?

error: could not create '/usr/local/lib/python2.7/dist-packages/django': Permission denied

----------------------------------------
Command /usr/bin/python -c "import setuptools;__file__='/home/franklingu/build/django   /setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --single-version-externally-managed --record /tmp/pip-W5MhGe-record/install-record.txt failed with error code 1
Storing complete log in /home/franklingu/.pip/pip.log

【问题讨论】:

    标签: python django pip


    【解决方案1】:

    改用sudo pip install django

    【讨论】:

    • 谢谢...既然这个错误是“权限被拒绝”那么我们应该使用 sudo 作为超级用户吗?
    • 是的。另一种选择是创建一个“虚拟环境”,您可以在其中安装不会位于系统目录中的软件包。例如,如果您处理需要不同版本 django 的多个项目,这很有用。 docs.python.org/dev/library/venv.html
    • 奇怪,但它不适用于virutalenv,我已经激活了virtualenv,但简单的 pip install 正在尝试访问全局系统目录。这在 4 年内从未发生过。
    【解决方案2】:

    不要使用 sudo 而是使用虚拟环境,如下所示:

    $ sudo apt-get install python-virtualenv
    $ mkvirtualenv django_env
    $ source django_env/bin/activate
    (django_env) $ pip install django
    (django_env) $ cd $HOME
    (django_env) $ mkdir projects
    (django_env) $ cd projects
    (django_env)/projects $ django-admin.py startproject foo
    (django_env)/projects $ cd foo
    (django_env)/projects/foo $ python manage.py runserver
    

    当你完成时;输入deactivate 退出虚拟环境:

    (django_env)/projects/foo $ deactivate
    /projects/foo $
    

    【讨论】:

    • 通常情况下,这可能比它的价值更麻烦。但我同意虚拟环境是一个有用的工具。
    • 这是为什么呢?据我所知,虚拟环境应该更安全?
    • @RobertMcGibbon 再也没有麻烦了;好处远远超过我在这里提到的。
    • 永远不要说永远,@BurhanKhalid。特别是在科学堆栈中,您需要大量编译的本地库(numpy/scipy/etc),virtualenv 和 pip 有很多缺点。例如,参见这个 twitter 线程和 Peter Wang(Continuum Analytics 的联合创始人)的 cmets。 twitter.com/pwang/status/393440886152896512
    【解决方案3】:

    您尝试安装 django "usr/local/lib/..." 的位置是 root 所有者位置。因此对于您需要的每个命令 须藤。

    除此之外,您可以遵循这些步骤

    1.安装虚拟环境

    $ sudo pip install virtualenv
    

    2.创建虚拟环境

    $ virtualenv -p python3 testEnv 
    

    (这里不要使用 sudo 它将使环境成为 root 所有权。这里我正在创建 python 3 环境)

    3.使用以下命令激活该环境

    $ source testEnv/bin/activate
    

    4。使用命令安装django

    $ pip install django
    

    5.使用以下命令可以检查该环境中已安装的包

    $ pip freeze
    

    注意:最好使用不带 sudo 的 pip 命令。如果我们使用 sudo,该包将更改为 root 所有权

    【讨论】: