【问题标题】:Pip default behavior conflicts with virtualenv?Pip 默认行为与 virtualenv 冲突?
【发布时间】:2015-08-16 18:27:43
【问题描述】:

我正在关注本教程http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world/page/5

当我到达virtualenv flask 命令时,我收到了这个错误信息:

Can not perform a '--user' install. User site-packages are not visible in this virtualenv.

这是有道理的,因为 virtualenv 的目的是创建一个您可以控制的新环境,而 --user 命令将所有内容放在特定位置,从而破坏了分离开发环境的目标。

看起来 pip 默认为 --user 安装,我可以更改此默认行为吗?而且,更好的是,我可以让 pip 始终与 virtualenv 一起玩吗?

为了澄清,这是我的终端的样子。

MELCHIOR:miguelgrinberg-microblog megablanc$ virtualenv flask
New python executable in flask/bin/python
Installing setuptools, pip, wheel...
  Complete output from command /Users/megablanc/Dev...log/flask/bin/python -c "import sys, pip; sys...d\"] + sys.argv[1:]))" setuptools pip wheel:
  Can not perform a '--user' install. User site-packages are not visible in this virtualenv.
----------------------------------------
...Installing setuptools, pip, wheel...done.
Traceback (most recent call last):
  File "/Users/megablanc/Library/Python/2.7/bin/virtualenv", line 11, in <module>
    sys.exit(main())
  File "/Users/megablanc/Library/Python/2.7/lib/python/site-packages/virtualenv.py", line 832, in main
    symlink=options.symlink)
  File "/Users/megablanc/Library/Python/2.7/lib/python/site-packages/virtualenv.py", line 1004, in create_environment
    install_wheel(to_install, py_executable, search_dirs)
  File "/Users/megablanc/Library/Python/2.7/lib/python/site-packages/virtualenv.py", line 969, in install_wheel
    'PIP_NO_INDEX': '1'
  File "/Users/megablanc/Library/Python/2.7/lib/python/site-packages/virtualenv.py", line 910, in call_subprocess
    % (cmd_desc, proc.returncode))
OSError: Command /Users/megablanc/Dev...log/flask/bin/python -c "import sys, pip; sys...d\"] + sys.argv[1:]))" setuptools pip wheel failed with error code 1

【问题讨论】:

    标签: python flask pip virtualenv


    【解决方案1】:

    您不需要设置--user 标志。创建 virtualenv (virtualenv flask) 后,激活它:source flask/bin/activate。你的 shell 应该类似于 (flask) ~&gt;

    一旦你的 virtualenv 被激活,你应该能够毫无问题地 pip 安装包。例如,pip install numpy。它们将安装在:lib/python2.6/site-packages/(适用于您使用的任何 Python 版本)

    【讨论】:

    • 我在virtualenv flask的过程中遇到了这个错误,所以我无法激活它。
    • 发现错误,在 ~/Library/Application Support/pip/pip.conf 中将 pip 设置为默认用户
    • 但不在 Windows 上。给你一个ACCESS DENIED 错误
    【解决方案2】:

    ~/.pip. 中有一个 pip.conf 文件,在那里我使用命令gedit pip.conf 将标志user=true 更改为user=false,之后我就可以成功创建虚拟环境了。

    【讨论】:

    【解决方案3】:

    对我有用的是将 $VIRTUAL_ENV_DIRECTORY/pyvenv.cfg 更改为 include-system-site-packages = true 似乎很老套。

    【讨论】:

      【解决方案4】:

      就我而言,/etc/pip.conf 中有一个文件秘密设置了user=true。因此,每次我激活 virtualenv 时,该配置仍然会影响 virtualenv。

      删除那条线对我有用。

      【讨论】:

      • 这也对我有用,谢谢!在 Manjaro/Arch linux 上,这个文件归 python-pip 包所有,显然这个设置是最近引入的。 pacman -Qo /etc/pip.conf 返回/etc/pip.conf is owned by python-pip 19.2.3-1.0
      【解决方案5】:

      当您的 virutalenv myenv 被激活(来源 myenv/bin/activate)时,删除 --user

      【讨论】:

        【解决方案6】:

        有些人建议您编辑/etc/pip.conf,这 (i) 需要超级用户权限并且 (ii) 如果操作不当可能会破坏您的整个系统。因此,最好只为您的用户保留它。

        使用文本编辑器打开$HOME/.pip/pip.conf。如果它不存在(在我的 Manjaro 机器中就是这种情况),请创建它。然后添加下面的行,保存并关闭。

        [global]
        user=false
        

        当您更改程序的设置时,如果可能,最好在$HOME 下这样做,这将 (i) 在更新和重新安装系统之间保留设置(如果您已将磁盘分隔到 / 和 @987654326 @partitions,当然)和(ii)不会破坏程序的进一步升级,在这种情况下,pip

        【讨论】:

          【解决方案7】:

          在我的例子中,我正在为 python disco mapreduce 库做一个make test

          所以我修改了Makefile 测试部分并删除了--user 标志。

          【讨论】:

            【解决方案8】:

            在我的例子中,来自 anaconda 的自定义 python 安装干扰了系统安装。检查which pip...解决方案是删除或移动python的自定义安装。

            【讨论】:

              【解决方案9】:

              虽然这个问题是很久以前提出的,但也许另一个答案对某人还是有用的。

              如果仅在尝试将软件包安装到 您的主目录之外 的 virtualenv 时出现上述问题,则问题可能是您登录的用户帐户对您尝试的文件夹没有权限安装到。

              使用chown改变/提升用户对目标虚拟环境所在文件夹的权限,例如:

              chown username /var/www/your-webproject-folder/ -r

              sudo chown username /var/www/your-webproject-folder/ -r

              如果你必须用 root 来做。

              【讨论】:

                【解决方案10】:

                这对我有用,我只将$VIRTUAL_ENV_DIRECTORY/pyvenv.cfg 更改为

                include-system-site-packages = true
                

                默认设置

                include-system-site-packages = false
                

                注意:

                > python --version 
                Python 3.8.3 r c 1
                

                【讨论】:

                  【解决方案11】:

                  检查您的PIP_USER 环境变量是否已设置。
                  这为我解决了这个问题。
                  如果您使用的是GitPod then this is a known issue

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2021-10-19
                    • 2018-06-30
                    • 1970-01-01
                    • 2021-10-06
                    • 2015-03-01
                    • 2018-02-16
                    相关资源
                    最近更新 更多