Python - 虚拟环境
Python 虚拟环境
Python 虚拟环境在项目目录中创建一个虚拟的 Python 安装。用户可以为每个项目安装和管理 Python 包。这允许用户安装包并修改他们的 Python 环境,而不必担心破坏其他环境中安装的包。
Python 中的虚拟环境是什么?
Python 虚拟环境是:
- 被视为可丢弃的。
- 用于包含特定项目的 Python interpreter、软件库和二进制文件。
- 包含在一个目录中,通常在项目目录中命名为 venv 或 .venv。
- 不被视为可移动或可复制的。
当你在计算机上安装 Python 软件时,它可以在文件系统中的任何位置使用。这是一种系统范围的安装。
在用 Python 开发应用程序时,可能需要使用 pip 工具安装一个或多个库(例如,pip3 install somelib)。此外,一个应用程序(假设为 App1)可能需要特定版本的库——比如 somelib 1.0。同时,另一个 Python 应用程序(例如 App2)可能需要同一库的较新版本,比如 somelib 2.0。因此,安装新版本可能会因为同一库的两个不同版本之间的冲突而损害 App1 的功能。
通过在同一台机器上提供两个隔离的 Python 环境,可以避免这种冲突。这些被称为虚拟环境。虚拟环境是一个独立的目录结构,包含隔离的安装,具有 Python interpreter、标准库和其他模块的本地副本。
下图展示了使用虚拟环境的用途和优势。使用全局 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 interpreter 的本地副本将放置在 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 interpreter 的本地副本。你可以在这个虚拟环境中启动 Python 会话。
检查 Python 是否在虚拟环境中运行?
要确认当前 Python 会话是否在 virtual environment 中,请检查 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'] >>>
此 virtual environment 的 scripts 文件夹还包含 pip 工具。如果您从 PyPI 安装一个 package,该 package 将仅在当前 virtual environment 中生效。
停用虚拟环境
要停用此 environment,请运行 deactivate.bat。