Python - 虚拟环境



Python 虚拟环境

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 安装,可以创建多个虚拟环境,每个虚拟环境都有同一库的不同版本,从而避免冲突。

python virtual environment

使用 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 解释器的副本将放置在 scripts 文件夹中。


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']
>>>

此虚拟环境的 scripts 文件夹还包含 pip 实用程序。如果从 PyPI 安装包,则该包将仅在当前虚拟环境中处于活动状态。

停用虚拟环境

要停用此环境,请运行 deactivate.bat