venv是什么
venv是Python 3中的一个内置模块,它提供了一种创建Python虚拟环境的方法。虚拟环境是一种隔离Python环境的机制,它可以让我们在同一台机器上使用不同的Python解释器和库,而不会互相干扰。在Python 2中,可以使用第三方工具如virtualenv来创建虚拟环境,达到与venv相似的效果。
如果不使用虚拟环境,可能会遇到以下问题:
- 版本冲突:不同的Python工程可能会依赖不同的Python版本或第三方库版本,如果不使用虚拟环境,就可能会导致版本冲突,从而导致程序无法正常运行。
- 难以维护:在没有虚拟环境的情况下,可能需要手动安装和管理多个Python版本和第三方库版本,这会增加开发和维护的难度。
- 难以迁移:如果需要将程序从一台计算机迁移到另一台计算机,可能需要手动安装和配置所需的Python环境和第三方库,这会增加迁移的难度和风险。
使用虚拟环境可以解决上述问题,它提供了一种隔离Python环境的机制,可以在不同的Python工程中使用不同的Python版本和第三方库版本,从而避免版本冲突,简化开发和维护,以及方便迁移。因此,建议在开发Python程序时使用虚拟环境。
如何使用venv
创建虚拟环境
要创建一个虚拟环境,需要使用venv模块提供的venv命令。例如,要在当前目录下创建一个名为myenv的虚拟环境,可以运行以下命令:
python3 -m venv myenv
激活虚拟环境
然后通过以下方式激活虚拟环境:
在Linux或macOS中,运行以下命令:
source myenv/bin/activate
一旦激活了虚拟环境,我们就可以使用pip安装所需的第三方库,并在该虚拟环境中运行Python程序。当完成工作后,可以使用deactivate命令退出虚拟环境。
在使用venv前,我本地安装的requests库如下:
➜ python_test pip3 list | grep requests
requests 2.28.1
创建一个虚拟环境后,激活虚拟环境后,就多了(myenv) ➜提示符,同时使用pip3 list来查看是没有安装requests库的
python3 -m venv myenv
➜ python_test source myenv/bin/activate
(myenv) ➜ python_test pip3 list | grep requests
WARNING: You are using pip version 20.2.3; however, version 23.0.1 is available.
然后我安装一个requests库,发现安装了一个更新的版本2.28.2
(myenv) ➜ python_test pip3 install requests
Collecting requests
Using cached requests-2.28.2-py3-none-any.whl (62 kB)
Requirement already satisfied: charset-normalizer<4,>=2 in ./myenv/lib/python3.8/site-packages (from requests) (3.1.0)
Requirement already satisfied: certifi>=2017.4.17 in ./myenv/lib/python3.8/site-packages (from requests) (2022.12.7)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in ./myenv/lib/python3.8/site-packages (from requests) (1.26.14)
Requirement already satisfied: idna<4,>=2.5 in ./myenv/lib/python3.8/site-packages (from requests) (3.4)
Installing collected packages: requests
Successfully installed requests-2.28.2
WARNING: You are using pip version 20.2.3; however, version 23.0.1 is available.
退出虚拟环境
执行deactivate命令
(myenv) ➜ python_test deactivate
➜ python_test
由于虚拟环境提供了一种隔离Python环境的机制,因此不同的工程可以在同一个虚拟环境中使用不同的Python版本和第三方库,而不会相互干扰。但是venv本身并不涉及Python版本的管理,它只是用于创建和管理Python虚拟环境。
要管理不同的Python 3版本,我们需要安装多个版本的Python,并使用不同的路径来区分它们。
结语
最后附上我个人公众号:namedlock的技术笔记,欢迎大家关注,谢谢。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。