我使用以下命令创建一个新项目:
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
问题:
答案 0 :(得分:2)
实际上,当env处于活动状态时,pip
会将库安装到virtualenv的子目录中。其中的任何内容都独立于任何系统范围的安装,反之亦然。删除env显然会删除子目录中的内容。
另一方面,如果你允许的话,virtualenv可以选择回退到系统安装的软件包。删除virtualenv后,系统范围的安装显然仍然存在。
顺便说一下,当前的activate
会对某些内容进行硬编码,因此您甚至无法重命名virtualenv目录;你必须删除并重新安装它。在requirements.txt
或类似内容中保留所需的所有内容是简化此过程以及记录依赖项的好方法。
答案 1 :(得分:1)
虚拟环境的目的是将您的开发环境与实际环境分开。不同的项目具有不同的包依赖性。因此,对于这些情况,虚拟环境会派上用场。
flask
,kivy
,foo
和bar
,那么您需要在进入另一个虚拟环境时安装它们(这是Virtula环境的全部目的)。对于您的情况,我可以看到您在安装软件包之前正在激活。所以它应该正常工作。您始终可以使用pip freeze
查看已安装的软件包。