Venv 和内存使用,我应该关注吗?

Venv and Memory Usage, Should I be Concerned?

我对使用 venv 还很陌生。对于许多不同的包,有没有办法告诉每个 venv 使用了多少?当我删除一个 venv 时,我是否也删除了分配给其中所有内容的内存 space?

When I delete a venv am I also removing the memory space allocated for everything located within?

是的。


virtualenv 将产生一个单独的“虚拟环境”,可以独立于系统的 Python 环境使用。这允许你做一些有用的事情,比如在没有 root 访问权限的情况下安装包和更改默认的 python 解释器版本。

如您所知,设置起来很容易:

$ virtualenv -p python3.5 ./venv
Running virtualenv with interpreter /usr/bin/python3.5
Using base prefix '/usr'
New python executable in /home/attie/venv/bin/python3.5
Also creating executable in /home/attie/venv/bin/python
Installing setuptools, pkg_resources, pip, wheel...done.

完成此操作后,您会在 venv 目录中找到整个虚拟环境...检查它使用了多少存储空间很简单 - 在我的例子中为 18MB:

$ du -hs venv
18M     venv

激活环境后,您会看到 pip / python / etc... 二进制文件位于您的 venv 目录中:

$ which python
/usr/bin/python
$ . venv/bin/activate
$ which python
/home/attie/venv/bin/python

它是完全独立的 - 运行 pip install 会影响这个虚拟环境,并且根本不会改变更广泛的系统安装。

当你决定“我不想再那样了”,或者“糟糕,我弄坏了东西,让我们重新开始 ",您可以简单地删除并重新初始化虚拟环境(如果需要)。

删除此目录将释放该虚拟环境使用的所有存储空间:

$ rm -rf venv

如果您将项目文件放在虚拟环境的目录中(即本例中的 venv),那么您也会丢失项目文件。 推荐。

如果您改为将项目文件保存在虚拟环境之外(推荐),那么删除 venv 目录也不会像您期望的那样整理项目文件。


有两点值得注意:

  • 可以通过 运行 deactivate 停用虚拟环境。激活虚拟环境会改变 shell 的环境,所以如果你在这个 shell 中激活了环境,那么你应该在删除它之前停用它。
  • 虚拟环境不喜欢被移动,根本 - 它们会完全崩溃。相反,您需要删除(如果需要)并在新位置设置新的虚拟环境。