大多数 Python 新手不知道如何设置遵循专业程序员使用的最新标准的开发环境。本教程将教您如何使用行业公认的最佳实践正确创建一个完整的 Python 开发环境。
虚拟环境通过创建隔离环境帮助我们解决项目依赖冲突。这些“隔离环境”包含 Python 程序员开发项目可能需要的所有优点。
虚拟环境包括 Python 二进制文件的全新副本,以及整个 Python 标准库的独立副本。这就是它可以自行工作的原因。
使用虚拟环境给我们带来了以下优势:
requirements.txt
文件与其他人共享依赖项我在我的项目中使用了许多库。其中包括三个 Web 应用程序开发框架,还有其他我想在未来探索的库。这是 Python 中严肃项目依赖于其他开发人员编写的其他包的主要论点。
如果您是 Django 开发人员,我相信您会使用Django rest 框架来创建强大的 rest API、用于收集有关当前请求/响应的各种调试信息的Django 调试工具栏、用于处理实时操作和调度的Celery以及等等。
例如,我requests
的一些项目非常依赖于该包,而我目前正在开发的 Django Web 应用程序依赖于 2.3.0 版本。根据官方文档,在撰写本文时,此包的最新版本是 3.2 版。
假设我继续在我的 Ubuntu 机器上安装最新版本的库,因为我需要它用于另一个项目。在我尝试使用我的旧项目之前,一切似乎都运行良好,该项目在 2.3.0 中运行良好。突然间,一切都破碎了。
发生了什么?也许最新版本的 Django 的 API 从 2.3.0 版本开始发生了变化?原因在这一点上并不重要,因为我的旧项目已损坏且不再有效。
两个项目之间产生了冲突。它们使用相同的库,但需要不同版本的库。
各种包解决了这个问题。让我们看看一些突出的。
在本教程中,我们将使用 Python 3,因此让我们从检查 Python 安装开始。
为此,请打开一个终端 — Windows 上的 cmd/PowerShell — 并键入以下命令:
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
通过检查其版本来证明二进制文件的存在:
python3 --version
Python 3.9.5
注意:如果上面的命令有效,你需要运行python3
而不是python
.
既然您知道在您的机器上运行哪个 Python 命令,让我们进入虚拟环境。
venv
模块让我们使用内置的 Python venv 模块来创建您的第一个虚拟环境。
注意:要使用此模块,您需要在系统中安装 Python 3.3 或更高版本。
要使用 来创建 Python 虚拟环境venv
,请键入以下命令:
python -m venv virt1
注意:该-m
标志表示 Python 正在将内置venv
模块作为脚本运行。
这将创建一个名为 的虚拟环境virt1
,但这只是一个参数。您可以使用您想要的任何名称创建虚拟环境。
virt1
目录中安装的所有内容都不会影响全局包或系统范围的安装,从而避免依赖冲突。
重要的是要知道每次我们想要使用创建的虚拟环境时,我们都需要使用以下命令激活它:
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 | |
视窗 | 命令行工具 | C:> (venv-name)\Scripts\activate.bat |
电源外壳 | PS C:> (venv-name)\Scripts\Activate.ps1 |
注意:$
POSIX 上的符号和Windows 上的C:>
,PS C:>
符号不是命令的一部分。
您可能会注意到,我在 POSIX(macOS 和 Linux)中使用了 bash shell,这就是我运行上述命令的原因。
一旦虚拟环境被激活,终端提示就会发生一些变化。
以下命令可让您停用虚拟环境:
deactivate
请注意您的终端提示如何再次更改。
现在再次激活您的虚拟环境并使用which
命令检查正在使用的 Python 二进制文件:
source virt1/bin/activate
which python
如果一切正常,您应该得到类似于以下输出的内容:
/home/daniel/tests/python-tests/venvs/virt1/bin/python
如果您deactivate
和which
您还是应该得到不同的结果:
deactivate
/usr/bin/python
这是因为,在虚拟环境中工作时,正在使用放置在该环境中的二进制副本。这同样适用于包。
尽管这不是 pip 指南,但重要的是展示 pip 和虚拟环境之间的工作流程。
pip——其名称代表“Pip Installs Packages”——是一个用于安装和管理 Python 包的包管理器。
当您想将项目分发给其他人时,它非常有用,因为它允许其他开发人员 - 和最终用户 - 一目了然地安装项目的所有依赖项。
例如,开发人员可以激活一个虚拟环境,然后运行以下命令来安装项目的依赖项:
pip install -r requirements.txt
这requirements.txt
是包含所有项目依赖项的文件 - 包的特定版本。
要生成项目的依赖项文件,您可以运行以下命令:
pip freeze > requirements.txt
如果要安装特定版本的包,可以运行pip install
后跟包名、双等号 ( ==
) 及其版本:
pip install package==version
在其他情况下,我们也可以从我们的机器(或虚拟环境)中卸载一个包:
pip uninstall some-package-name
Virtualenv 是一个用于创建虚拟环境的外部包。实际上,Python 内置venv
是它的一个子集,因此virtualenv
具有比我们看到的第一个选项更多的功能。您可以在官方文档中了解更多关于virtualenv
优势venv
的信息。
现在,让我们使用以下命令安装virtualenv
pip(确保您已停用前一个venv
):
pip install virtualenv
这个工具的工作原理类似于venv
,所以让我们通过创建另一个虚拟环境来测试它:
virtualenv virt2
注意:deactivate
在运行上述命令之前,请确保您的其他环境。
与 一样venv
,我们必须在使用之前激活虚拟环境:
source virt2/bin/activate
如果我现在安装最新版本的请求,它将仅安装在虚拟环境中venv2
:
pip install requests
上述命令产生以下输出:
Collecting requests
...
Installing collected packages: urllib3, idna, chardet, certifi, requests
Successfully installed certifi-2021.5.30 chardet-4.0.0 idna-2.10 requests-2.25.1 urllib3-1.26.5
如果我运行pip freeze
打印所有已安装软件包列表的命令,我会得到这个:
certifi==2021.5.30
chardet==4.0.0
idna==2.10
requests==2.25.1
urllib3==1.26.5
如您所见,我获得的唯一包是最新版本的requests
(在撰写本文时)及其依赖项。
我们可以在使用该-p
标志的同时virtualenv
使用全局安装在机器上的特定版本的 Python。
例如,virt2
如果您的机器上安装了 Python3,则可以使用以下命令创建包含 Python3的虚拟环境:
virtualenv -p /usr/bin/python3 virt2
要删除虚拟环境,您可以rm -r
像处理要删除的任何其他目录一样使用该命令:
rm -r virt2
您可以在官方文档中了解有关 virtualenv CLI 界面高级用法的更多信息。
Virtualenvwrapper提供了非常有用的命令,通过将它们全部组织在一个简单的地方,使使用虚拟环境变得更加容易。
与 virtualenv 一样,它可以通过 pip 轻松安装。
pip install virtualenvwrapper
这将virtualenvwrapper.sh
在您的 ~/.local/bin/
目录中创建一个 shell 文件。此文件夹用于存储包二进制文件,让您可以直接从终端使用 Python 包。
在使用 virtualenvwrapper 之前,您需要编辑您的 shell 配置文件。由于我使用的是 bash shell,因此我会将以下内容附加到 .bashrc
位于我的主目录中的文件中:
cat <<EOT>> ~/.bashrc
# Virtualenwrapper settings
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python
export VIRTUALENVWRAPPER_VIRTUALENV=~/.local/bin/virtualenv
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/Documents
source ~/.local/bin/virtualenvwrapper.sh
EOT
这将追加 - 在文件末尾写入 - 上述内容到.bashrc
文件中。如果上面的命令不起作用,请打开文件并手动修改它。
将VIRTUALENVWRAPPER_PYTHON
指向您的计算机的二进制的Python。您可以使用以下命令进行检查(无需激活任何虚拟环境):
which python
/usr/bin/python # My result
确保.bashrc
根据您的 Python 二进制路径修改文件。
注意:如果您使用的是 Windows,则可以使用virtualenvwrapper-win。
然后,我们.bashrc
通过运行以下命令,使用我们对文件所做的更改重新加载 bash shell :
source ~/.bashrc
现在,该mkvirtualenv
命令可用于轻松创建默认情况下放置在此文件夹中的新环境:
mkvirtualenv sitepoint
您可以sitepoint
通过输入WORKON_HOME
路径来查看虚拟环境文件夹,我们在上面定义为$HOME/.virtualenvs
:
ls ~/.virtualenvs
sitepoint # Virtual env folder
要获取 virtualenvwrapper 创建的所有虚拟环境的列表,您可以workon
不带参数运行以下命令:
workon
sitepoint # My result
我们可以借助以下workon
命令轻松激活虚拟环境:
workon sitepoint
停用虚拟环境的命令与我们之前使用的命令相同:
deactivate
在不同的虚拟环境之间切换非常容易。例如,到workon
另一个虚拟环境:
workon another_virtualenv
要删除虚拟环境,rmvirtualenv
应使用以下命令:
rmvirtualenv sitepoint
在本教程中,您了解了每个 Python 开发人员都应该掌握的基本工作流程。虚拟环境是任何协作Python 项目的重要组成部分,您可以通过使用它们立即提高工作效率。
本文系外文翻译,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系外文翻译,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。