当前位置: 首页 > 知识库问答 >
问题:

在全局站点包中安装pip而不是virtualenv

拓拔安邦
2023-03-14

使用pip3virtualenv中安装软件包会导致软件包安装在全局站点软件包文件夹中,而不是安装在virtualenv文件夹中。下面是我如何在OS X Mavericks(10.9.1)上设置Python3和virtualenv的:

我使用自制软件安装了Python3:

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

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

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

运行python3返回/usr/local/bin/python3(重启shell后)。

注意:哪个python3仍然返回/usr/bin/python。

使用pip3安装的virtualenv

pip3 install virtualenv

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

virtualenv testpy3 -p python3
cd testpy3
source bin/activate

注意:如果我没有指定-p python3,那么virtualenv中的bin文件夹中将缺少pip。

运行which pipwhich pip3都会返回virtualenv文件夹:

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

现在,当我尝试在激活的virtualenv中使用pip安装例如Markdown时,pip将安装在全局站点包文件夹中,而不是virtualenv的站点包文件夹中。

pip install markdown

运行pip list返回:

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

内容的/用户/kristof/VirtualEnvs/testpy3/lib/python3.3/site-包

__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包的内容

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/

如您所见,全局站点包文件夹包含Markdown,虚拟环境文件夹不包含。

注意:我以前在不同的VM上安装过Python2和Python3(遵循这些说明),Python3也有同样的问题;不过,在基于Python2的virtualenv中安装软件包的工作是完美的。

任何提示、提示……都将不胜感激。

共有3个答案

何涵衍
2023-03-14

我也有同样的问题,我通过删除venv目录并重新创建它来解决它!

deactivate (if venv is activated first deactivate it)
rm -rf venv
virtualenv -p python3 venv
. ENV/bin/activate
pip3 install -r requirements.txt

现在一切都像一个魔咒。

堵彬彬
2023-03-14

对我来说,这不是一个pip或虚拟的问题。这是一个python问题。在在线学习了一些教程之后,我在~/.bash_配置文件(或~/.bashrc)中手动设置了$PYTHONPATH。这个手动设置的$PYTHONPATH在virtualenv中是可用的,因为它可能是允许的。

此外,add2virtualenv由于virtualenv中的某些原因,没有将我的项目路径添加到我的$PYTHONPATH中。

只是为那些可能仍然被困的人提供一些岔路!干杯!

柯波
2023-03-14

有趣的是你提起这个,我也有同样的问题。我最终解决了它,但我仍然不确定是什么导致了它。

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

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

如果它是错误的,纠正它,停用,然后. bin/激活,如果我们共同的问题有相同的原因,它应该工作。如果还是不行,不管怎样,你都在正确的轨道上。我经历了和你一样的问题解决程序,一遍又一遍地执行pip,跟踪堆栈跟踪,等等。

绝对确保

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

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

如果这些都不起作用,一个临时的解决方案可能是,正如乔·霍洛韦所说,

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

也许不太理想,但它应该在紧要关头起作用。

链接到我的原始问题:

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

 类似资料:
  • 问题内容: 使用在a中安装软件包将导致该软件包安装在global site- packages文件夹中,而不是在virtualenv文件夹中。这是我在OS X Mavericks(10.9.1)上设置Python3和virtualenv的方法: 我使用Homebrew安装了Python3: 更改了中的变量;添加了以下行: 运行返回(重新启动外壳程序之后)。 注意: 尽管仍然返回/ 。 使用安装:

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

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

  • 我所期望的 编辑:解决方案相关为什么虚拟环境从我的shell继承$PYTHONPATH?

  • 我试图在我的(一组软件包列表)中安装所有依赖项。我所做的: 已创建虚拟环境 所有软件包都已安装,但当使用检查时,我什么都没有。尝试停用虚拟环境,并再次使,我已全部安装完毕。 我有点困惑,因为我非常确定我的虚拟环境被激活了,而且我在做时有正确的pip路径()。另外,我尝试一个接一个地安装依赖项,它们被安装在虚拟环境中 我不能一个接一个地做所有这些,我需要在某个地方复制安装。有人能帮忙吗?

  • 我使用了来创建一个新的env,但是当我试图安装来安装较新版本的时,它是全局安装的,尽管我的环境被激活,这导致了的全局安装。。如何仅在虚拟环境中使用它