使用Python创建虚拟环境的入门指南
在本文中,您将学习如何在Python中的Windows和Linux操作系统中开始使用虚拟环境。
当您在本地开发环境中开始处理多个项目时,您经常会遇到依赖问题。为每个项目创建虚拟环境可以帮助您更好地管理依赖和项目要求。
为了利用Python中虚拟环境的优势,让我们学习创建和激活虚拟环境。👩🏽💻
虚拟环境是什么?
虚拟环境是包含项目代码和依赖的隔离和独立环境。
但是为什么要使用虚拟环境呢?
嗯,虚拟环境允许您安装和使用同一库的不同版本来进行各种项目。使用虚拟环境还可以确保当两个或更多项目使用不同版本时不会出现破坏性的更改。让我们更详细地了解一下。
在Python中安装软件包
Python标准库提供了几个有用的模块,用于单元测试、与操作系统交互、处理日期和时间等等。
然而,在处理时,您经常需要安装由Python社区开发的其他软件包。对于诸如数据收集的网络爬虫、机器学习和Web应用程序等应用程序来说,这尤其如此。
为了安装和管理这些软件包,您可以使用conda或pip。
每个项目都需要安装一组特定的软件包。然而,当您在本地机器上的开发环境中安装所有软件包时,所有项目共享全局安装的软件包。
那么这是一个问题吗?
嗯,您的开发环境中可能有N个软件包。然而,您当前正在工作的项目可能只需要其中的3个。当所有项目共享常规安装时,很难确定哪个项目需要哪个已安装软件包 – 与每个项目相关的依赖项。
这种方法还有另一个限制。假设您的项目库中有一个Django 2.2项目。您决定开始一个使用Django 4的项目。因此,您在相同的开发环境中安装了最新版本的Django。
现有的安装会发生什么情况?
它将被删除并被您安装的Django版本替换。随着新的稳定版本发布,某些功能可能已被弃用。而您之前的Django项目可能无法正常工作。
总结我们到目前为止的讨论:当软件包都安装在一个共享环境中时,依赖项管理变得困难,因为项目需要自己的一组libraries来运行。
虚拟环境的工作原理
到目前为止,我们已经看到了在全局开发环境(系统范围内安装)中安装软件包所面临的挑战。这促使我们了解虚拟环境如何解决这个限制。
当您为Python项目创建和激活虚拟环境时,您只能安装当前项目所需的那些软件包。
重新考虑Django项目的例子,使用虚拟环境,您可以同时运行Django 2.2和Django 4项目 – 无冲突。这是因为Django安装不再是系统范围的安装,而是限制在各个项目的虚拟环境中。
本质上:虚拟环境是包含项目的代码和依赖项的隔离环境。
虚拟环境的优势
现在你已经了解了Python中虚拟环境的工作原理,让我们列举一下使用它们的优点:
- 虚拟环境为每个项目提供了一个独立的开发环境,可以只安装特定项目所需的包。
- 由于项目的虚拟环境是独立和隔离的,不同的项目可以使用不同版本的相同库,具体取决于需求。使用虚拟环境,您不必担心系统权限来安装库和设置开发环境。
- 在虚拟环境中安装软件包后,您可以在requirements.txt文件中记录项目的依赖关系。这样,其他开发人员就可以复制项目的开发环境,并使用一个命令安装所需的软件包。
创建虚拟环境的工具
到目前为止,您已经了解了虚拟环境的工作原理和使用它们的优点。让我们探索一些流行的工具,您可以使用它们来创建和管理Python中的虚拟环境。
#1. Virtualenv
Virtualenv 是用于创建和管理Python项目的虚拟环境的广泛使用的工具之一。虽然 venv
包中有一部分 virtualenv
的功能,但 virtualenv
包比 venv
更快且可扩展。
#2. Pipenv
使用 pipnev,您既可以使用 virtualenv
的虚拟环境功能,也可以使用 pip
的软件包管理功能。它使用pipfiles
在虚拟环境内管理项目依赖。
您可以在这个 Pipenv playground 上直接在浏览器中尝试 pipenv
。
#3. Conda
如果您在开发中使用 Anaconda distribution of Python ,那么您可以使用 conda 进行软件包管理和创建虚拟环境。
要了解更多,请参阅这个全面的指南 managing environments with conda。
#4. Poetry
Poetry 是一个软件包管理工具,可让您管理所有Python项目的依赖关系。要开始使用Poetry,您需要安装Python 3.7或更高版本。
#5. Venv
如前所述,venv 提供了 virtualenv 的功能子集,但它的优点是它内置在Python标准库中,从Python 3.3开始可用。
它随Python安装而来,不需要安装外部软件包。在这个教程中,我们将使用它来创建和使用虚拟环境。✅
如何在Ubuntu中创建Python虚拟环境
💬 要按照本教程的后续步骤进行操作,您需要在本地安装Python 3。确保您正在运行Python 3.5或更高版本。
本节概述了在Ubuntu Linux机器上创建和激活虚拟环境的步骤。同样的步骤也可以在其他 Linux distros 上使用。
为了更方便地管理,让我们创建一个项目目录,并cd
进入该目录;我们将在这个目录中创建venv
。
$ mkdir my_project
$ cd my_project
为您的Python项目创建一个虚拟环境的一般语法是 python3 -m venv
。运行此命令后,将在当前工作目录中创建一个名为my_env
的虚拟环境:
$ python3 -m venv my_env
如何在虚拟环境中激活和安装软件包
在创建了虚拟环境之后,您可以激活它并在其中安装所需的软件包。要激活虚拟环境,您可以运行以下命令:
$ source my_env/bin/activate
一旦您激活了虚拟环境,您可以运行pip list
命令来获取已安装软件包的列表:
$ pip list
到目前为止,我们还没有安装任何软件包,所以您应该能够看到每个创建的虚拟环境中默认安装的setuptools
和pip
。
在虚拟环境中安装pip
允许您安装特定项目所需的软件包;这就是为什么每个项目都有一个独立的开发环境。
现在您已经激活了虚拟环境,可以使用pip在其中安装特定于项目的软件包。例如,让我们安装requests
,它是最常下载的Python软件包之一,提供了几个有用的功能,用于发送与Web API一起使用的HTTP请求。
$ pip install requests
当您安装requests库时,您会发现requests库与其所需的所有软件包一起安装。
$ pip list
您可以使用pip freeze
命令并将输出重定向到requirements.txt文件中,如下所示:
$ pip freeze > requirements.txt
如果您检查当前项目目录的内容,您会发现已创建了requirements.txt文件。
$ ls
# my_env requirements.txt
在项目工作完成后,您可以通过运行以下命令来取消激活虚拟环境:
$ deactivate
如何在Windows中创建Python虚拟环境
一般来说,Linux环境更适合开发。如果您使用的是Windows机器,您可以考虑使用Windows Subsystem for Linux (WSL)来设置Ubuntu终端环境进行本地开发。
如果您使用的是Windows机器,可以使用Windows PowerShell或命令提示符,并使用以下命令创建虚拟环境:
> python -m venv
如何激活虚拟环境
在Windows机器上激活虚拟环境的方法因您是在命令提示符还是Windows PowerShell上工作而有所不同。
如果您在命令提示符上,运行以下命令来激活虚拟环境:
> Scriptsactivate.bat
或者,如果您使用的是Windows PowerShell,运行此命令将激活虚拟环境:
> ScriptsActivate.ps1
您可以在虚拟环境中安装所有所需的软件包。
要取消激活虚拟环境,可以在命令提示符和Windows PowerShell上运行deactivate
命令。
结论
本文中,我们讨论了系统范围安装的限制以及它们如何使跨Python项目的依赖管理变得困难。Python中的虚拟环境提供了一种更好地管理依赖关系的方法,同时为各个项目提供了一个隔离的开发环境。
在用于创建和管理Python虚拟环境的广泛使用工具中,您已经学会了如何使用Python标准库中内置的venv来创建和激活虚拟环境。
在项目的专用虚拟环境中,可以安装特定于项目的库的版本。然后,这些要求可以在requirements.txt文件中捕获,从而使其他开发人员能够轻松复制项目环境。
当您启动下一个 Python project 时,请务必使用虚拟环境以更好地管理依赖关系。愉快编码!🎉