【问题标题】:Why does pip installs a package outside my virtual environment?为什么 pip 在我的虚拟环境之外安装一个包?
【发布时间】:2012-05-04 12:34:23
【问题描述】:

做了一个虚拟环境的源码后我试试

pip install -U --no-deps django-social-auth

然后它返回:

OSError: [Errno 13] Permission denied: '/usr/local/lib/python2.6/dist-packages/django_social_auth-0.6.9-py2.6.egg-info/dependency_links.txt'

为什么要在virtualenv之外写?

【问题讨论】:

  • 你能确定你调用的python确实是来自虚拟环境的吗?
  • 确实是系统中安装的,不是虚拟环境中的

标签: python virtualenv pip


【解决方案1】:

我在重命名包含我的虚拟环境的目录时遇到了这个问题。 pip 使用的硬路径不再正确。

更新 pip 脚本中的 shebang 以指向您的虚拟环境的 python 可执行文件。

【讨论】:

  • 太棒了!我打开了虚拟环境/bin/pip,发现shebang 没有指向虚拟环境的python 可执行文件。我已经更新了它,但是当我激活这个虚拟环境并执行“哪个 python”时,我仍然得到系统的 python 而不是虚拟环境的。然而,到目前为止,这是一个非常好的答案。将其标记为已接受。
  • 是的,我认为你需要运行 /path/to/virtualenv/bin/python
  • 这不应该被赞成,如果你改变了路径,只需构建一个新的 virtualenv,不要乱编辑 shebangs。首先,你很可能有很多很多这样的硬编码路径,不仅在 bin 目录中,而且在站点包中,其次它们是一次性和可重建的。 @Bastian,要确保您的 source 命令成功,请尝试 echo $VIRTUAL_ENV
【解决方案2】:

在我看来,要么你正在执行一个不属于 virtualenv 的 pip,要么你正在执行,但是被执行的 python 解释器不是 virtualenv 的一部分。使用which pip 检查您正在执行的 pip 是否是正确的,并使用 your_envdir/bin/python pip <arguments> 从 virtualenv 中强制 python,而不是仅调用普通 pip。

这很奇怪,因为如果你用 bin/activate 正确激活了环境,你应该得到正确的 pip。你确定你是用. bin/activate 激活的,而不是sh bin/activate 吗?他们是两个不同的东西。提示改变了吗?

【讨论】:

  • 你是对的,哪个 pip 返回 /usr/bin/pip。我使用了“源应用程序/virtual_environments/my_project/bin/activate”,提示更改为“(my_project)user@host:~$”。当我尝试使用虚拟环境中的 pip 时,我得到:'python:错误的解释器:没有这样的文件或目录'。
  • 您知道是什么原因造成的吗?
  • @Bastian:你的虚拟环境中没有python?
  • 是的,我可以看到里面有一个 Python。
  • @Bastian: 好的,所以有三种可能性:1)您看到的 python 是一个链接并且链接已损坏 2)您使用的 pip 的第一行很奇怪,指向一个不再存在的绝对路径(例如,因为您移动了虚拟环境)3)其他东西
【解决方案3】:

您可能应该确保您是虚拟环境中的点子,所以……。喜欢

./env/bin/pip install -U --no-deps django-social-auth

【讨论】:

    【解决方案4】:

    当我错误地将PYTHONPATH 设置为~/.bashrc 时,我遇到了这个问题。如果echo $PYTHONPATH 返回您预期环境之外的任何内容,请使用export PYTHONPATH='' 将其删除,并检查您的~/.bashrc 是否有PYTHONPATH

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-21
      • 2019-09-02
      • 2021-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-27
      相关资源
      最近更新 更多