Virtualenv 在全局目录中安装包

Virtualenv installing a package in the global directory

我一定要阅读 this question 和类似的,但我找不到我的问题的答案。

我的问题是:当我进入 muy virtual env 并激活它时,如果我在那里安装了一个软件包,它也会安装在我电脑的其他地方。

因此,例如,如果我在终端中输入:

cd home/Documents/Python/tests/my_virtual_env
source bin/activate

即激活虚拟环境。如果我输入:

pip3 install wget  #just an example package 

我看到了安装过程,我可以 运行 一个使用 wget 的 .py 脚本。但是,为什么这个包也安装在我电脑的其他地方?

  1. 我确保我事先没有使用 pip3 list 安装那个包。
  2. 我通过从其他目录 运行ning 一个 .py 脚本(使用 cd /etc.etc/ 更改目录然后 运行ning 从那里).
    1. 我在适当的时候停用了环境。

我还意识到,如果我在 virtualenv 中卸载该软件包,它也会在其他地方卸载。

非常感谢您的帮助。

可能正在执行的 pip3 命令实际上并未绑定到 虚拟环境 。因此,您可以改为执行以下操作,无论 虚拟环境 是否激活,该操作都有效:

$ path/to/my_virtual_env/bin/python3 -m pip install SomeProject

下面的命令应该会给你一个相对清晰的项目安装位置的指示,确保它在虚拟环境site-packages目录中:

$ path/to/my_virtual_env/bin/python3 -m pip show SomeProject

所以它应该显示某种东西:

Name: SomeProject
...
Location: .../path/to/my_virtual_env/lib.python3.X/site-packages

However, why is this package also installed elsewhere in my computer?

以下显示了二进制文件所在的位置:

$ which somecommand

somecommand是否在Python虚拟环境中应该比较容易识别。