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 requestsrequests 2.28.1
创立一个虚拟环境后,激活虚拟环境后,就多了(myenv) ➜提示符,同时应用pip3 list来查看是没有装置requests库的
python3 -m venv myenv➜ python_test source myenv/bin/activate(myenv) ➜ python_test pip3 list | grep requestsWARNING: You are using pip version 20.2.3; however, version 23.0.1 is available.
而后我装置一个requests库,发现装置了一个更新的版本2.28.2
(myenv) ➜ python_test pip3 install requestsCollecting 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: requestsSuccessfully installed requests-2.28.2WARNING: 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的技术笔记,欢送大家关注,谢谢。