为什么我的venv似乎在全球范围内安装



对于一个学校项目,我不得不使用Python venv。这不是第一次,但当我初始化并激活venv并执行pip list时,它显示了我的整个全局包集合。因此,我递归地删除了整件事,并认为最好再次在全局范围内重新安装所有基本组件(numpy、pandas等(,然后只在需要的地方安装特定组件。

然后我发现,无论我安装在哪里(venv是否激活(,它总是会在全球范围内下载。无论我在哪里pip list,它总是会显示整个事情。这让我想到我可能从来没有让venvs去上班。

我总是这样做:

python3 -m venv venv
source venv/bin/activate

它会在小箭头(或$(之前显示(venv),这意味着它有效,但显然不有效。

我错过了什么?

我使用的是M1 MacBook Air,使用的是zsh(哦,我的zsh,但我认为这不会有什么不同(,Python 3.10。


编辑:事实证明,只有一家特定的供应商出现了这种情况。创建另一个供应商时,返回预期行为。但仍然不确定问题出在哪里。

首先,您想检查在运行python3时引用了哪个python解释器:为此,请运行which python3(如果您的env已成功激活,则应返回path/to/env/bin/python3(

每次你想在你的病毒环境中安装一个包时,请确保运行python3 -m pip install my_package而不是pip install my_package:这将确保为与你的环境相关的python解释器安装my_package

最后,为了避免在全局python解释器上错误地安装任何包,请将其添加到.bashrc/.zshrc:

export PIP_REQUIRE_VIRTUALENV="true"

每次尝试将程序包安装到全局解释器时,都会引发一个错误。为了保留全局安装软件包的选项,我额外定义了以下命令:

gpip() {
PIP_REQUIRE_VIRTUALENV="" pip "$@"
}

并运行CCD_ 12进行全局安装。

相关内容

最新更新