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

广告