当用 Python
开发软件时,一个基本的方法是在你的机器上安装 Python
,通过终端安装所有需要的库,在一个 .py
文件或笔记本中编写所有的代码,并在终端运行你的 Python
程序。
这对于简单的 Python
脚本项目来说效果很好。但是在复杂的软件开发项目中,比如构建一个 Python
库、一个 API
或者软件开发工具包,往往你要处理多个文件、多个包和依赖关系。因此,你将需要为该特定项目隔离你的 Python
开发环境,即创建一个虚拟环境。
【解析】“虚拟环境是一个
Python
环境,这样安装在其中的Python
解释器、库和脚本就与安装在其它虚拟环境中的、以及(默认)安装在“系统”上的Python
(也就是作为操作系统的一部分安装的库)中的任何库隔离。
Python
虚拟环境是一种用于隔离不同 Python
项目所需依赖的机制。它允许在同一台机器上同时管理多个 Python
项目,每个项目都可以有自己独立的 Python
版本和依赖库,互不干扰。
Python
提供了多种虚拟环境工具,其中包括venv
、virtualenv
和conda
。本文将详细介绍这三种工具的特点、使用方法以及在实际工作中的示例代码。
venv
是 Python
官方提供的虚拟环境工具,从 Python 3.3
版本开始引入,成为了Python
的标准库,用于创建和管理虚拟环境,如果使用的是 Python 3.3
以下的版本,可以考虑使用 virtualenv
来创建和管理虚拟环境。venv
的使用方法非常简单,可以通过以下命令创建和管理虚拟环境:
python3 -m venv myenv
上述命令将在当前目录下创建名为"myenv"的虚拟环境。虚拟环境创建完成后,可以通过激活命令进入虚拟环境:
在Linux/macOS上:
source myenv/bin/activate
在Windows上:
myenv\Scripts\activate.bat
在创建虚拟环境后,需要激活虚拟环境才能使用它。激活虚拟环境会将该虚拟环境的 Python
解释器添加到系统的环境变量中,使得在命令行中运行 python
命令时,默认使用虚拟环境中的解释器。
激活虚拟环境后,将看到命令行提示符前面有(myenv
)字样,表示已经进入了虚拟环境。
激活虚拟环境后,可以使用 pip
命令安装项目所需的依赖包。
当完成了当前项目的开发或者需要切换到其他项目时,可以使用以下命令退出虚拟环境:
(myenv) [root@localhost pythonproject]# deactivate
[root@localhost pythonproject]#
此时,命令行提示符将恢复为正常状态。
virtualenv
是一个第三方库,可以在 Python 2
和 Python 3
中使用。它相比于venv
提供了更多的功能和选项,如果使用的是 Python 3.3
以下的版本,可以考虑使用virtualenv
来创建和管理虚拟环境。使用 virtualenv
创建虚拟环境的命令如下:
virtualenv myenv
如果提示:command not found...
,可使用 yum install
安装 python3-virtualenv
包以使系统安装该命令。
与 venv
类似,虚拟环境创建后,可以使用以下命令激活虚拟环境:
在Linux/macOS上:
source myenv/bin/activate
在Windows上:
myenv\Scripts\activate.bat
激活虚拟环境后,可以使用 pip
命令安装项目依赖。
当完成了当前项目的开发或者需要切换到其他项目时,可以使用以下命令退出虚拟环境:
(myenv) [root@localhost pythonproject]# deactivate
[root@localhost pythonproject]#
此时,命令行提示符将恢复为正常状态。
conda
是一个流行的 Python
虚拟环境和包管理工具,它是 Anaconda
发行版的一部分。conda
不仅可以创建虚拟环境,还可以管理不同版本的 Python
解释器和第三方包。使用conda
创建虚拟环境的命令如下:
conda create --name myenv
激活虚拟环境后,可以使用以下命令进入虚拟环境:
在Linux/macOS上:
source activate myenv
在Windows上:
activate myenv
激活虚拟环境后,可以使用 conda
命令安装项目所需的包。
当完成了当前项目的开发或者需要切换到其他项目时,可以使用以下命令退出虚拟环境:
(myenv) [root@localhost pythonproject]# conda deactivate
[root@localhost pythonproject]#
此时,命令行提示符将恢复为正常状态。
前面,我们已经激活了虚拟环境,现在我们如何确认项目实际上已经与主机 Python
隔离了呢?我们可以做几件事。
首先,我们通过在激活的虚拟环境中运行下面的代码来检查虚拟环境中安装的软件包列表。你会注意到只有两个包 --pip
和 setuptools
,它们是新的虚拟环境中默认的基本包。
pip list
接下来你可以在一个没有激活虚拟环境的新终端中运行上面的相同代码。你会注意到在你的主机 Python
中多了很多库,这些库是你在过去已经安装的。主机上面的这些库并不是你的 Python
虚拟环境的一部分。
要安装新的库,你可以很容易地只用 pip
安装这些库。虚拟环境将使用它自己的 pip
,所以你不需要使用 pip3
。
在安装完所需的库后,你可以通过使用 pip list
来查看所有安装的库,或者你可以通过运行下面的代码来生成一个列出所有项目依赖的文本文件:
pip freeze > requirements.txt
你可以把这个 requirements.txt
文件命名为你想要的任何名字。
为什么需求文件对你的项目很重要?考虑到你把你的项目打包在一个 tar.gz
文件中(没有 env
文件夹),然后你和开发者朋友们分享。
要重新创建你的开发环境,你的朋友只需要按照上面的步骤来激活一个新的虚拟环境。
他们不必逐一安装每个依赖项,而只需运行下面的代码,在他们自己的项目副本中安装你的所有依赖项:
pip install -r requirements.txt
注意,通常不建议分享你的 env
文件夹,它应该很容易被复制到任何新环境中。
通常你的 env
目录会被包含在一个 .gitignore
文件中(当使用 GitHub
这样的版本控制平台时),以确保环境文件不会被推送到项目库中。
通过使用 Python
虚拟环境,可以轻松地管理不同项目的依赖关系,避免了不同项目之间的冲突,并且可以保持每个项目的独立性。