当前位置: 首页 > 面试题库 >

在全局站点软件包而不是virtualenv中进行pip安装

楚承天
2023-03-14
问题内容

使用pip3在a中安装软件包将virtualenv导致该软件包安装在global site-
packages文件夹中,而不是在virtualenv文件夹中。这是我在OS X
Mavericks(10.9.1)上设置Python3和virtualenv的方法:

我使用Homebrew安装了Python3:

ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
brew install python3 --with-brewed-openssl

更改了中的$PATH变量.bash_profile;添加了以下行:

export PATH=/usr/local/bin:$PATH

运行which python3返回/usr/local/bin/python3(重新启动外壳程序之后)。

注意: 尽管which python3仍然返回/ usr/bin/python

virtualenv使用安装pip3

pip3 install virtualenv

接下来,创建一个新的virtualenv并激活它:

virtualenv testpy3 -p python3
cd testpy3
source bin/activate

注意:如果我不指定-p python3,则virtualenv中bin文件夹中将缺少pip。

正在运行,which pip并且which pip3都返回virtualenv文件夹:

/Users/kristof/VirtualEnvs/testpy3/bin/pip3

现在,当我尝试使用pip在已激活的virtualenv中安装Markdown时,pip将安装在全局site-
packages文件夹中,而不是virtualenv的site-packages文件夹中。

pip install markdown

运行pip list收益:

Markdown (2.3.1)
pip (1.4.1)
setuptools (2.0.1)
virtualenv (1.11)

内容/Users/kristof/VirtualEnvs/testpy3/lib/python3.3/site-packages

__pycache__/
_markerlib/
easy_install.py
pip/
pip-1.5.dist-info/
pkg_resources.py
setuptools/
setuptools-2.0.2.dist-info/

内容/usr/local/lib/python3.3/site-packages

Markdown-2.3.1-py3.3.egg-info/
__pycache__/
easy-install.pth
markdown/
pip-1.4.1-py3.3.egg/
setuptools-2.0.1-py3.3.egg
setuptools.pth
virtualenv-1.11-py3.3.egg-info/
virtualenv.py
virtualenv_support/

如您所见, 全局 site-packages文件夹包含Markdown,而virtualenv文件夹则不包含。

注意:之前我在不同的VM上安装了Python2和Python3(遵循这些说明),并且Python3遇到了相同的问题。但是,在基于Python2的virtualenv中安装软件包的工作无懈可击。

任何提示,暗示……将不胜感激。


问题答案:

有趣的是您提出了这个问题,我只是遇到了完全相同的问题。我最终解决了它,但是我仍然不确定是什么原因造成的。

尝试检查您的bin/pipbin/activate脚本。在中bin/pip,查看shebang。这是对的吗?如果不是,请更正它。然后在〜42中的〜行中bin/activate,检查您的virtualenv路径是否正确。它看起来像这样

VIRTUAL_ENV="/Users/me/path/to/virtual/environment"

如果是错误的,请更正deactivate,然后进行纠正,. bin/activate如果我们的共同问题有相同的原因,也应该可以解决。如果仍然没有,无论如何,您都处在正确的轨道上。我经历了与您一样的解决问题的例行程序,which pip一遍又一遍,遵循堆栈跟踪等。

绝对要确保

/Users/kristof/VirtualEnvs/testpy3/bin/pip3

是您想要的,而不是引用另一个类似名称的测试项目(我遇到了这个问题,不知道它是如何开始的。我怀疑是同时运行多个virtualenvs)。

如果这些都不起作用,那么可能会采取临时解决方案,如乔·霍洛威(Joe Holloway)所说,

只需使用其完整路径运行virtualenv的pip(即,不依赖于搜索可执行路径),甚至不需要激活环境。它将做正确的事。

也许不是很理想,但是应该在紧要关头工作。

链接到我的原始问题:

VirtualEnv /
Pip尝试在全局安装软件包



 类似资料:
  • 使用在中安装软件包会导致软件包安装在全局站点软件包文件夹中,而不是安装在virtualenv文件夹中。下面是我如何在OS X Mavericks(10.9.1)上设置Python3和virtualenv的: 我使用自制软件安装了Python3: 更改了中的变量;添加了以下行: 运行python3返回(重启shell后)。 注意:仍然返回/usr/bin/python。 使用安装的: 接下来,创建一

  • 编辑找到的#2个解决方案;见下文。 我正在使用VirtualEnv在Flask中编写一个小应用程序。这已经不是我第一次这么做了,但是这次和过去两次我都试过了,我遇到了同样的问题。当我并尝试安装一个包--,例如,它一直在全局安装,而不是在VirtualEnv中。奇怪的是,它只有在我停用之后才会发生,而且这种情况在那一刻是不一致的。 也就是说,如果我一次全部安装,我似乎能够安装我需要的所有东西,甚至偶

  • 我试图安装flake8包使用pip3,它似乎拒绝安装,因为已经安装在一个本地位置。 如何强制全局安装(系统级)? 请注意,我更喜欢一个通用的解决方案(应该在Debian、OSX甚至Windows上工作),一个应该在任何平台上使用的解决方案,所以我不想自己指定目标。 出于某种奇怪的原因,它的行为就像我已经指定了,而在我的情况下,我没有指定。 我能够在全球范围内安装包的唯一方法是首先删除它,然后在此之

  • 问题内容: 因此,对于我的python项目,我有一个名为venv的virtualenv文件夹。 我可以跑: 它安装了项目所需的所有需求,其中之一是M2Crypto。安装它的唯一方法是通过apt-get: 然后如何将通过apt安装的此软件包添加到venv文件夹? 问题答案: 我到底做了什么:

  • 我正试图在Mac OS X El Capitan上使用创建一个虚拟环境。我已经用安装了Python 2.7.11,默认情况下包括、和。 然而,当我尝试安装以下说明在留档或从任何其他资源,我得到几个问题: 完成其工作后,可执行文件未放置在中,因此我需要手动它(这可能表明此步骤的安装有问题) 运行后,它会创建新的环境,从-安装中捕获Python 2.7.11,但是:文件夹中没有。这意味着,如果我尝试,

  • 我安装twisted时遇到问题 PIP1.1 from/home/chris/GL/GLBackend/glenv/lib/python2.7/site-packages/pip-1.1-py2.7.egg(python 2.7) 创建虚拟环境 在glenv/bin/python2.7中创建新的python可执行文件也在glenv/bin/python中创建可执行文件安装分发...........