删除虚拟环境后安装的包会怎样?

What will happen to packages installed when the virtual environment is deleted?

我使用以下命令创建一个新项目:

mkdir ~/my_project
python -m venv ~/my_project
source ~/my_project/Scripts/activate
pip install flask
pip install kivy
pip install foo
pip install bar

假设我决定删除 my_project 并创建一个新项目:

rm -rf ~/my_project
mkdir ~/new_project
python -m venv ~/new_project
source ~/Scripts/activate

问题:

确实,pip 在 env 处于活动状态时将库安装到 virtualenv 的子目录中。那里的任何东西都独立于任何系统范围的安装,反之亦然。删除 env 显然会删除子目录中的内容。

另一方面,如果您愿意,virtualenv 可以选择回退到系统安装的软件包。删除 virtualenv 后,系统范围的安装显然仍然存在。

顺便说一句,当前的 activate 对某些内容进行了硬编码,因此您甚至无法重命名 virtualenv 目录;你必须 zap 并重新安装它。将所有需要的东西保存在 requirements.txt 或类似文件中是简化此过程以及记录依赖关系的好方法。

虚拟环境的重点是将您的开发环境与实际环境分开。不同的项目有不同的包依赖。所以对于这些情况,虚拟环境就派上用场了。

  • 如果您在虚拟环境中安装了 flaskkivyfoobar,那么是的,您需要在进入另一个环境时安装它们虚拟环境(这就是 Virtula 环境的全部目的)。
  • 如果您发现这些软件包在全球范围内可用,那么可能是您没有正确使用它。你需要在安装任何东西之前激活你的虚拟环境,否则包将被全局安装。

对于你的情况,我可以看到你在安装包之前激活。所以它应该工作正常。您可以随时使用 pip freeze 查看安装了哪些软件包。