Python 虚拟环境

Python 虚拟环境

在这一章中,您将了解Python中虚拟环境是什么,以及如何创建和使用虚拟环境来构建Python应用程序。

当您在计算机上安装Python软件时,它可以在文件系统的任何地方使用。这是一个系统范围的安装。

在开发Python应用程序时,可能需要使用pip工具安装一个或多个库(例如, pip3 install somelib )。此外,一个应用程序(例如App1)可能需要特定版本的库,比如 somelib 1.0 。同时,另一个Python应用程序(例如App2)可能需要同一个库的更新版本,例如 somelib 2.0 。因此,通过安装新版本,App1的功能可能会受到影响,因为两个不同版本的库之间会发生冲突。

可以通过在同一台机器上提供两个独立的Python环境来避免这种冲突。这些称为虚拟环境。虚拟环境是一个分离的目录结构,包含隔离的安装,其中有着Python解释器、标准库和其他模块的本地副本。

下图显示了使用虚拟环境的目的和优势。使用全局的Python安装,创建了多个虚拟环境,每个环境都有不同版本的同一个库,以避免冲突。

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会话是否在虚拟环境中,请检查 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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程