前言

前几天写了一篇《[记录] python 之 venv 当遇见error: externally-managed-environment》。但是总感觉这个是介绍怎么解决问题的,并不是专门来说python的venv的功能之类的,所以思来想去,还是重新开一篇文章来介绍(水)一下venv的基本操作。

正文

1. 什么是venv

venv是python提供的创建轻量级的虚拟环境的方式,每个环境都有自己的安装目录,且与其他虚拟环境相互独立。这样做的好处就是环境控制(其实我想用conda的,奈何raspberry pi的cpu结构既不支持anaconda也不支持miniconda),这样的话依赖之间就不会互相冲突。

2. 安装venv

在Python 3.3以及以上的版本,venv已经是标准库的一部分,一般来说不用单独安装,但是如果要的话pip install即可。

3. 创建虚拟环境

CTRL + ALT + T打开终端,切换到你想要创建的python的项目目录,运行下面的命令:

python3 -m venv <env_name>

这里的<env_name>按照项目的内容进行取拟即可。

命令结束以后,在当前目录下会出现一个同名的<env_name>,里面有我们的虚拟python环境。

4. 激活虚拟环境

创建虚拟环境之后,我们需要进行激活。激活的虚拟环境会确保你在这个环境中安装或者运行的任何python包都是隔离的

如果在Linux或者MacOS,命令为:

source <env_name>/bin/activate

如果在Windows,命令为:

.\<env_name>\Scripts\activate

激活环境后,你的终端提示符会显示虚拟环境的名称,表明你现在在虚拟环境工作:

(<env_name>) seanzou@seanzou-desktop:~$   # 在虚拟环境

seanzou@seanzou-desktop:~$                # 不在虚拟环境,终端提示符没有虚拟环境名称

在虚拟环境激活的情况下,正常使用即可,你可以使用pip进行安装,或者进行其他python相关开发活动,这些都只会影响当前的虚拟环境。(这也是我们的目的,不是嘛?:D)

5. 退出虚拟环境

当你完成工作时候,想要退出虚拟环境,在终端运行下面的命令:

deactivate

这会使你恢复到系统的全局Python环境。

6. 删除虚拟环境

如果你不再需要某个虚拟环境,你可以简单地通过删除其目录来删除它。(注意:在虚拟环境被激活的情况下,不能这么做,你首先要确保已经退出虚拟环境。)然后,使用以下命令删除虚拟环境目录:

如果在Linux或者MacOS,命令为:

rm -rf <env_name>

如果在Windows,命令为:

rmdir /s /q <env_name>

7. 缺点(只能创建对应版本的python环境)

其实venv有一个缺点,就是其创建的虚拟环境继承了它被创建时所用的Python解释器的版本,也就是说使用venv并不能像conda那样直接安装不同版本的python,所以当需要不同版本的python的时候,还是要conda或者手动了orz。

除了python我还发现一个用在MacOS上面的通过homebrew安装的pyenv,可惜只在homebrew,apt并没有找到,于是无法给Ubuntu用上。(pyenv/pyenv链接

总结

学习一下venv~!

给不能用conda和pyenv的系统用用吧,害~。

参考

[1] ChatGPT
[2] 自己
[3] pyenv/pyenv

Q.E.D.


立志做一个有趣的碳水化合物