大多数 Python 新手不知道如何建立一个遵循专业程序员使用的最新标准的开发环境。本教程将教你如何使用业界公认的最佳实践,正确地创建一个完全工作的 Python 开发环境。
虚拟环境
虚拟环境通过创建隔离的环境来帮助我们解决项目的依赖性冲突。这些 "隔离环境 "包含了Python程序员在开发他们的项目时可能需要的所有好东西。
虚拟环境包括一个全新的 Python 二进制文件的副本,以及整个 Python 标准库的独立副本。这就是为什么它可以自己工作。
使用虚拟环境给我们带来以下好处。
- 我们能够完整地维护我们的本地机器包
- 我们可以通过一个
requirements.txt
文件与其他人共享依赖项 - 我们可以在专门的服务器上部署Python应用(PythonAnyWhere、Heroku等等)。
对虚拟环境的需求
我在我的项目中使用了许多库。其中有三个网络应用程序开发框架,还有一些我想在将来探索的其他库。这可以作为主要的论据,Python中的严肃项目依赖于其他开发者编写的其他软件包。
如果你是一个Django开发者,我相信你会使用Django rest框架来创建强大的rest API,使用Django Debug Toolbar来收集关于当前请求/响应的各种调试信息,使用Celery来处理实时操作,还有调度,等等。
例如,我的一些项目非常依赖requests
包,而我目前正在开发的一个Django网络应用程序就依赖于2.3.0版本。根据官方文档,在撰写本文时,这个包的最新版本是3.2版。
假设我继续前进,并在我的Ubuntu机器上安装最新版本的库,因为我需要它来做另一个项目。一切似乎都很正常,直到我试图使用我的老项目,该项目在2.3.0版本下运行良好。突然间,一切都坏了。
发生了什么?也许最新版本的Django的API在2.3.0版本后发生了变化?在这一点上,原因并不重要,因为我的老项目已经坏了,不再工作了。
两个项目之间产生了冲突。它们利用了同一个库,但它们需要不同的版本。
不同的软件包可以解决这个问题。让我们看看一些突出的例子。
开始之前
在本教程中,我们将使用Python 3,所以让我们从检查你的Python安装开始。
要做到这一点,打开一个终端--Windows下的cmd/PowerShell--并输入以下命令。
bash
代码解读
复制代码
python --version
Python 3.9.5 # My result
注意:大多数macOS和Linux系统都安装了Python。如果你使用的是Windows,你可以查看Python安装指南。
如果你没有得到一个形式为Python 3.x
的结果,有两个选择。
- 如果这个命令返回的是
Python 2.x
版本,你需要使用python3
和本教程。 - 如果你得到一个
Unknown command
的错误,试着运行python3
,如果你得到另一个错误,请遵循 Python 安装指南
你可以通过检查python3
二进制文件的版本来证明它的存在。
bash
代码解读
复制代码
python3 --version
Python 3.9.5
注意:如果上面的命令有效,你需要运行python3
而不是python
。
现在你知道哪个Python命令在你的机器上运行,让我们进入虚拟环境。
内置的venv
模块
让我们使用内置的 Pythonvenv 模块来创建你的第一个虚拟环境。
注意:要使用这个模块,你需要在你的系统中安装 Python 3.3 或更高版本。
要使用venv
创建一个 Python 虚拟环境,键入以下命令。
bash
代码解读
复制代码
python -m venv virt1
注意:-m
标志意味着Python正在以脚本的形式运行内置的venv
模块。
这将创建一个名字为virt1
的虚拟环境,但这只是一个参数。你可以用你想要的任何名字创建虚拟环境。
安装在virt1
目录中的所有东西都不会影响全局包或全系统的安装,从而避免了依赖性冲突。
激活虚拟环境
至关重要的是,每次我们想使用创建的虚拟环境时,都需要用以下命令来激活它。
bash
代码解读
复制代码
source virt1/bin/activate
这并不是在每个系统中都适用,所以你可以查看下面的表格来清楚地了解使用哪条命令。
平台 | 外壳 | 激活虚拟环境的命令 |
POSIX | bash/zsh | $ source (venv-name)/bin/activate |
鱼 | $ source (venv-name)/bin/activate.fish | |
csh/tcsh | $ source (venv-name)/bin/activate.csh | |
PowerShell核心 | $ (venv-name)/bin/Activate.ps1 | |
Windows | cmd.exe | C:> (venv-name)/Scripts/activate.bat |
PowerShell | PS C:> (venv-name)\Scripts\Activate.ps1 |
注意:POSIX上的$
标志和Windows上的C:>
,PS C:>
标志不是命令的一部分。
你可能注意到,我在POSIX(macOS和Linux)中使用bash shell,这就是为什么我在运行上面的命令。
环境被创建后
一旦虚拟环境被激活,终端提示就会发生一些变化。
下面的命令让你停用虚拟环境。
bash
代码解读
复制代码
deactivate
注意你的终端提示符又发生了变化。
现在再次激活你的虚拟环境,使用which
命令来检查正在使用的 Python 二进制文件。
bash
代码解读
复制代码
source virt1/bin/activate
which python
如果一切工作顺利,你应该得到类似于下面的输出。
bash
代码解读
复制代码
/home/daniel/tests/python-tests/venvs/virt1/bin/python
如果你再deactivate
和which
,你应该得到一个不同的输出。
bash
代码解读
复制代码
deactivate
/usr/bin/python
这是因为,当在一个虚拟环境中工作时,正在使用放置在该环境中的二进制拷贝。这同样适用于软件包。