【Python学习笔记】| Python 虚拟环境

文摘   科技   2024-04-13 08:30   江苏  

当用 Python 开发软件时,一个基本的方法是在你的机器上安装 Python,通过终端安装所有需要的库,在一个 .py 文件或笔记本中编写所有的代码,并在终端运行你的 Python 程序。

这对于简单的 Python 脚本项目来说效果很好。但是在复杂的软件开发项目中,比如构建一个 Python 库、一个 API 或者软件开发工具包,往往你要处理多个文件、多个包和依赖关系。因此,你将需要为该特定项目隔离你的 Python 开发环境,即创建一个虚拟环境。

解析】“虚拟环境是一个 Python 环境,这样安装在其中的 Python 解释器、库和脚本就与安装在其它虚拟环境中的、以及(默认)安装在“系统”上的 Python(也就是作为操作系统的一部分安装的库)中的任何库隔离。

Python虚拟环境

Python 虚拟环境是一种用于隔离不同 Python 项目所需依赖的机制。它允许在同一台机器上同时管理多个 Python 项目,每个项目都可以有自己独立的 Python 版本和依赖库,互不干扰。

Python 提供了多种虚拟环境工具,其中包括venvvirtualenvconda。本文将详细介绍这三种工具的特点、使用方法以及在实际工作中的示例代码。

venv

venv 是 Python 官方提供的虚拟环境工具,从 Python 3.3 版本开始引入,成为了Python 的标准库,用于创建和管理虚拟环境,如果使用的是 Python 3.3 及以上的版本,可以考虑使用 venv 来创建和管理虚拟环境。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

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

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 虚拟环境,可以轻松地管理不同项目的依赖关系,避免了不同项目之间的冲突,并且可以保持每个项目的独立性。


Linux二进制
学习并分享Linux的相关技术,网络、内核、驱动、容器等。
 最新文章