Python虚拟环境创建了一个在项目目录内安装Python的虚拟环境。用户可以为每个项目安装和管理Python包。这允许用户能够安装包并修改他们的Python环境,而不必担心破坏其他环境中的包。
什么是Python虚拟环境?
Python虚拟环境被认为是:
-
-
用来包含特定的Python解释器和为支持项目所需的软件库和二进制文件
-
存储在一个目录中,通常在项目目录中约定命名为
venv
或.venv
-
当你在计算机上安装Python软件时,默认情况下它可以从文件系统的任何地方使用,这就是所谓的系统范围内的安装。
在开发Python应用程序时,可能需要安装一个或多个库使用pip工具(例如,pip3 install somelib
)。此外,一个应用(比如App1)可能需要某个库的特定版本——如somelib 1.0
。同时,另一个Python应用(比如App2)可能需要同一个库的较新版本——如somelib 2.0
。因此,安装新版本可能会由于同一库的不同版本之间的冲突而影响App1的功能。
这种冲突可以通过在同一台机器上提供两个隔离的Python环境来避免,这些被称为虚拟环境。虚拟环境是一个独立的目录结构,包含独立安装的Python解释器、标准库及其他模块的本地副本。
下图显示了使用虚拟环境的优势。通过全局Python安装创建了多个虚拟环境,每个环境都有不同版本的库,从而避免了冲突。
使用venv
创建Python虚拟环境
这一功能由Python标准发行版中的venv
模块支持。使用以下命令创建一个新的虚拟环境:
C:\Users\Acer>md pythonapp
C:\Users\Acer>cd pythonapp
C:\pythonapp>python -m venv myvenv
在此处,myvenv
是将在其中创建新的Python虚拟环境的文件夹,显示如下目录结构:
Directory of C:\pythonapp\myvenv
22-02-2023 09:53 <DIR> .
22-02-2023 09:53 <DIR> ..
22-02-2023 09:53 <DIR> Include
22-02-2023 09:53 <DIR> Lib
22-02-2023 09:53 77 pyvenv.cfg
22-02-2023 09:53 <DIR> Scripts
激活和停用虚拟环境的工具以及Python解释器的本地副本将放置在脚本文件夹中。
Directory of C:\pythonapp\myvenv\scripts
22-02-2023 09:53 <DIR> .
22-02-2023 09:53 <DIR> ..
22-02-2023 09:53 2,063 activate
22-02-2023 09:53 992 activate.bat
22-02-2023 09:53 19,611 Activate.ps1
22-02-2023 09:53 393 deactivate.bat
22-02-2023 09:53 106,349 pip.exe
22-02-2023 09:53 106,349 pip3.10.exe
22-02-2023 09:53 106,349 pip3.exe
22-02-2023 09:53 242,408 python.exe
22-02-2023 09:53 232,688 pythonw.exe
激活虚拟环境
要启用这个新的虚拟环境,请执行Scripts
文件夹中的activate.bat
。
C:\pythonapp>myvenv\scripts\activate
(myvenv) C:\pythonapp>
注意括号中的虚拟环境名称。Scripts
文件夹包含Python解释器的本地副本。您可以在该虚拟环境中启动Python会话。
检查Python是否运行在虚拟环境中
要确认这个Python会话是否处于虚拟环境中,请检查sys.path
。
(myvenv) C:\pythonapp>python
Python 3.10.1 (tags/v3.10.1:2cd268a, Dec 6 2021, 19:10:37) [MSC v.1929
64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', 'C:\\Python310\\python310.zip', 'C:\\Python310\\DLLs',
'C:\\Python310\\lib', 'C:\\Python310', 'C:\\pythonapp\\myvenv',
'C:\\pythonapp\\myvenv\\lib\\site-packages']
>>>
该虚拟环境的脚本文件夹也包含pip工具。如果您从PyPI安装一个包,该包将仅在当前虚拟环境中有效。
停用虚拟环境
要停用此环境,请运行deactivate.bat
。