繁体   English   中英

Pip 默认行为与 virtualenv 冲突?

[英]Pip default behavior conflicts with virtualenv?

我正在关注本教程

当我到达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

您不需要设置--user标志。 创建 virtualenv ( virtualenv flask ) 后,激活它: source flask/bin/activate 你的外壳应该看起来像(flask) ~>

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

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

~/.pip. 在那里,我使用命令gedit pip.conf将标志user=true更改为user=false ,之后我能够成功创建虚拟环境。

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

删除那条线对我有用。

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

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

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

[global]
user=false

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

就我而言,我正在为 python disco mapreduce 库make test

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

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

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

include-system-site-packages = true

默认设置

include-system-site-packages = false

笔记:

> python --version 
Python 3.8.3 r c 1

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

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

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

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

或者

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

如果你必须用root来做。

检查是否设置了PIP_USER环境变量。
这为我解决了这个问题。
如果您使用的是GitPod,那么这是一个已知问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM