使用Python开发项目免不了要安装各种包。我们安装的所有包都会被安装到同一个目录下,供Python调用。
如果两个Python项目用到同一个包的不同版本;或者一个新项目需要用到的包会影响以前已经完成调试的项目的开发环境,这时候我们的Python开发环境就会出问题。
「虚拟环境」可以解决以上痛点。它为我们每一个 Python 项目创建一个隔离的开发环境,每个开发环境所安装的包和依赖相互独立,可以确保项目的开发环境不相互干扰和污染。
Python自3.3版本之后,官方自带了用于创建虚拟环境的venv模块,用起来十分方便。现在,我们就在Windows系统中利用venv模块来展示Python虚拟环境的用法。
创建虚拟环境
虚拟环境可以创建在任意目录下,为了便于打理,建议创建在项目所在目录下。假设我们正在开发的项目位于“D:\myProject”目录下,那么我们在windows终端(cmd或Windows PowerShell)中执行以下指令就可以创建一个新的虚拟环境:
python -m venv D:\myProject\virtualEnvironment
其中,D:\myProject\virtualEnvironment为想要创建的虚拟环境的完整路径,留意指令中的空格。完成后,我们可以在“D:\myProject”目录中看到一个新建的目录“virtualEnvironment”,这就是我们刚刚创建的虚拟环境的目录,里面包含了一套完整而独立的Python开发环境,包括Python解释器、第三方包等等。
在终端使用虚拟环境
我们进入到“virtualEnvironment\Scripts“目录看看里面的内容。此目录下,有一些.exe后缀的应用程序,如python.exe就是这个虚拟环境的Python解释器,而activate和deactivate这些文件,则是用来在终端中进入和退出虚拟环境用的。
如果使用的终端是cmd命令提示符,我们在cmd中运行activate.bat文件即可进入虚拟环境,运行文件的方法是在cmd中输入文件的完整路径之后按回车即可:
D:\myProject\virtualEnvironment\Scripts\activate.bat
完成后,cmd中的命令提示符前会出现(virtualEnvironment)的标识,说明此时cmd已经进入到所创建的虚拟环境中了,在此cmd中运行Python程序,将会调用虚拟环境中的开发环境,而非电脑原有的Python开发环境了。
如果使用的终端是Windows PowerShell,则在Windows PowerShell中运行的是activate.ps1文件来进入虚拟环境:
D:\myProject\virtualEnvironment\Scripts\activate.ps1
如果是第一次在Windows PowerShell 终端中运行.ps1文件,那么终端大概率会报错:“在此系统上禁止运行脚本”。这是由于这是由于 PowerShell 的执行策略默认为“禁止执行脚本”所致。解决的办法是:以管理员身份运行 Windows PowerShell,在运行activate.ps1文件前,先执行以下指令来将执行策略设置为“RemoteSigned”,就可以运行本机上的脚本了:
set-executionpolicy RemoteSigned
现在重新执行指令运行activate.ps1文件,就可以顺利在Windows PowerShell中顺利进入虚拟环境了。
如果想要退出虚拟环境,两个终端都是直接运行deactivate文件即可:
deactivate
虚拟环境中安装第三方包
想要在虚拟环境中安装第三方包,可以在终端中进入虚拟环境后,使用pip install指令来安装。但是由于一些奇奇怪怪的原因,有时候在虚拟环境中使用pip install指令,会把包安装到电脑原Python环境中。因此,我建议使用以下指令来强制使用虚拟环境中的pip:
D:\myProject\virtualEnvironment\Scripts\python -m pip install xxx
这样可以确保第三方包被安装到虚拟环境下。
我们可以使用 pip list 指令将开发环境中安装的所有包的列表打印出来,可以看到,本机原生开发环境和虚拟环境中的包是相互独立的。
▲左:本机原生 Python 开发环境所安装的包。右:虚拟环境内所安装的包
在VS code中使用虚拟环境
Visual Studio Code,简称VS Code,是一个轻量又能打的Python开发IDE(当然它不止能开发Python),我用得非常顺手。
在VS code中使用虚拟环境来运行Python代码很简单:
-
点击VS code软件左下角“Select Python Interpreter”可以选择或切换Python解释器
-
在软件上方弹出的选择框中点击“Enter interpreter path…>Find…”
-
在弹出的选择框中,导航到D:\myProject\virtualEnvironment\Scripts目录,选中python.exe,确认。
这样,VS code就会用虚拟环境中的Python解释器来运行代码,使用的也即是这个项目所专属而独立的开发环境了。可以看到,此时VS code左下角显示了带有我们所创建的虚拟环境名称的python解释器了。
如果我们为不同的Python项目配置各自独立的虚拟环境,那么开发起来可以井井有条,不怕相互干扰了,真是强迫症福音!
感谢阅读,春节快乐!