Venv 和内存使用,我应该担心吗?

4 python-venv

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

Att*_*tie 7

当我删除 venv 时,我是否也删除了为其中的所有内容分配的内存空间?

是的。


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.
Run Code Online (Sandbox Code Playgroud)

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

$ du -hs venv
18M     venv
Run Code Online (Sandbox Code Playgroud)

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

$ which python
/usr/bin/python
$ . venv/bin/activate
$ which python
/home/attie/venv/bin/python
Run Code Online (Sandbox Code Playgroud)

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

当您决定“我不再想要那个”或“哎呀,我弄坏了一些东西,让我们重新开始”时,您可以简单地删除并重新初始化虚拟环境(如果需要)。

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

$ rm -rf venv
Run Code Online (Sandbox Code Playgroud)

如果你把你的项目文件放在虚拟环境的目录中(即:venv在这个例子中),那么你也会丢失你的项目文件。这是推荐的。

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


值得注意的是以下几点:

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