如何在 Ubuntu 22.04 上安装 Poetry 以管理 Python 依赖关系

介绍

Poetry是Python的依赖管理器,它还能够构建和包装您的Python项目以进行分布。作为依赖管理器,它配备了维护一致和包含虚拟环境的工具。

在本教程中,您将使用官方安装脚本安装诗歌,设置一个虚拟环境的诗歌项目,然后添加和安装项目的依赖。

前提条件

步骤1 - 安装诗歌

此命令将下载安装脚本,然后在您的系统上运行安装 Poetry. 虽然本教程适用于 Ubuntu 22.04 服务器,但此安装脚本可在 Linux、macOS 和 Windows 上运行,可通过本教程安装 WSL(Windows Subsystem for Linux)(https://andsky.com/tech/tutorials/how-to-install-the-windows-subsystem-for-linux-2-on-microsoft-windows-10)。

1curl -sSL https://install.python-poetry.org | python3 -
 1
 2[secondary_label Output]
 3Poetry (1.2.1) is installed now. Great!
 4
 5To get started you need Poetry's bin directory (/home/sammy/.local/bin) in your `PATH`
 6environment variable.
 7
 8Add `export PATH="/home/sammy/.local/bin:$PATH"` to your shell configuration file.
 9
10Alternatively, you can call Poetry explicitly with `/home/sammy/.local/bin/poetry`.
11

一旦安装完成,Poetry将提示您将其本目录添加到您的PATH,以便在您的命令行中使用poetry。在Bash的Ubuntu上,您可以通过使用nano或您喜爱的文本编辑器来打开~/.bashrc文件:

1nano ~/.bashrc

将下列行添加到文件的末尾:

1[label ~/.bashrc]
2. . .
3export PATH="/home/sammy/.local/bin:$PATH"

保存和退出文件,用nano可以通过按CTRL+X来退出和Y来保存任何更改来完成。

接下来,将更改应用到您的当前会话:

1source ~/.bashrc

要检查诗歌命令是否现在可用,请输入以下内容以显示当前的诗歌版本:

1poetry --version
1[secondary_label Output]
2Poetry (version 1.2.1)

现在你有一个工作安装的诗歌,你可以继续设置一个诗歌项目。

步骤二:创建一个诗歌项目

开始创建一个新的诗歌项目. 这个项目将带有虚拟环境,将被用于安装和管理你的依赖性. 这个教程将使用项目名称 sammy_poetry,但可以自由选择你喜欢的名字。

1poetry new sammy_poetry

接下来,导航到您的新项目目录:

1cd sammy_poetry

现在创建了您新创建的诗歌项目,包含所需的锅炉板文件。 若要查看您新创建的项目文件,请使用ls命令:

1ls
1[secondary_label Output]
2README.md dist pyproject.toml sammy_poetry tests

<$>[注] 注: 如果您有想要使用的现有项目,您可以使用不同的命令获取诗歌,以便将其识别为项目。

1poetry init

这将创建您现有项目中的所有必要文件,您可以继续使用本教程,就像它是一个新的项目一样。

步骤三:增加依赖性

在您开始将依赖性添加到您的项目之前,您将首先检查并理解 Poetry 使用的文件来保留您的依赖性。 在您的 Poetry 项目目录中,有一个自动生成的 pyproject.toml 文件,其中包含您的依赖性列表。

1nano pyproject.toml
 1[label pyproject.toml]
 2[tool.poetry]
 3name = "sammy-poetry"
 4version = "0.1.0"
 5description = ""
 6authors = ["Your Name <[email protected]>"]
 7readme = "README.md"
 8packages = [{include = "sammy_poetry"}]
 9
10[tool.poetry.dependencies]
11python = "^3.10"
12
13[build-system]
14requires = ["poetry-core"]
15build-backend = "poetry.core.masonry.api"

除了您在tool.poetry.dependencies下列的依赖性之外,在tool.poetry下还包含元数据,您可以随时使用自己的信息来定制这些元数据,例如姓名、电子邮件和项目描述。

值得注意的是,Python 3.10 虽然是最新版本,但可能需要资源,并且可能是一个问题,取决于系统。大多数 Python 库只需要最少的 3.8 版本。

在当前状态下,你的项目除了Python本身没有其他依赖性。Poetry可以直接从命令行添加新依赖性到你的项目。使用poetry add命令,Poetry将同时添加一个依赖性行到你的tool.poetry.dependencies块并同时安装依赖性。

檢查「pyproject.toml」檔案後,請退出編輯器,例如,您將添加受歡迎的 Python HTTP 圖書館 requests到您的項目的依賴,並使用「add」命令安裝它,此圖書館允許您以最少的 boilerplate 代碼發送 HTTP 請求,並對透過 HTTP 接口的應用程式有用,儘管任何套件都足夠為此演示目的。

1poetry add requests
 1[secondary_label Output]
 2Creating virtualenv sammy-poetry-i9Ouy_MV-py3.10 in /home/sammy/.cache/pypoetry/virtualenvs
 3Using version ^2.28.1 for requests
 4
 5Updating dependencies
 6Resolving dependencies... (0.3s)
 7
 8Writing lock file
 9
10Package operations: 5 installs, 0 updates, 0 removals
11
12  • Installing certifi (2022.9.24)
13  • Installing charset-normalizer (2.1.1)
14  • Installing idna (3.4)
15  • Installing urllib3 (1.26.12)
16  • Installing requests (2.28.1)

除了添加到您的「pyproject.toml」檔案並安裝「requests」,「add」命令還處理了虛擬環境的初始化。

您的「pyproject.toml」檔案將會更新如下:

1[label pyproject.toml]
2. . .
3[tool.poetry.dependencies]
4python = "^3.10"
5requests = "^2.28.1"
6. . .

^表示它将是安装的最低可接受的版本,更高版本也将是可接受的。

步骤 4 – 删除和拼接依赖

為了保持您目前安裝的依賴與您在「pyproject.toml」檔案中列出的依賴之間的一致性,Poetry 會使用「鎖定檔案」。

1[secondary_label Output]
2. . .
3Warning: poetry.lock is not consistent with pyproject.toml. You may be getting improper dependencies. Run `poetry lock [--no-update]` to fix it.
4. . .

因此,如果您需要删除依赖或编辑其版本,您应该使用删除诗歌命令. 虽然可以手动编辑pyproject.toml文件,但您将不得不考虑锁定文件并手动激活您的虚拟环境。

1poetry remove requests
 1[secondary_label Output]
 2Updating dependencies
 3Resolving dependencies... (0.1s)
 4
 5Writing lock file
 6
 7Package operations: 0 installs, 0 updates, 5 removals
 8
 9  • Removing certifi (2022.9.24)
10  • Removing charset-normalizer (2.1.1)
11  • Removing idna (3.4)
12  • Removing requests (2.28.1)
13  • Removing urllib3 (1.26.12)

现在删除请求后,您可以再次将其添加为附加依赖性。 使用依赖性,您通常希望为您的项目保留特定版本的库。

例如,你会将请求插入到非最新版本,这是在运行添加命令时的默认版本;相反,你会将它插入到2.26.0,这是在请求PyPI 历史中发现的较早的有效版本:

1poetry add [email protected]
 1[secondary_label Output]
 2Updating dependencies
 3Resolving dependencies... (0.3s)
 4
 5Writing lock file
 6
 7Package operations: 5 installs, 0 updates, 0 removals
 8
 9  • Installing certifi (2022.9.24)
10  • Installing charset-normalizer (2.0.12)
11  • Installing idna (3.4)
12  • Installing urllib3 (1.26.12)
13  • Installing requests (2.26.0)

现在,在你的pyproject.toml文件中,你会发现:

1[label pyproject.toml]
2. . .
3[tool.poetry.dependencies]
4python = "^3.10"
5requests = "2.26.0"
6. . .

这说明请求将始终作为版本2.26.0进行专门的安装。

结论

在本教程中,您已安装了诗歌,并创建了一个诗歌项目,无论是从头开始还是在现有项目中。您还添加了依赖,然后在虚拟环境中安装了这些依赖。

Published At
Categories with 技术
comments powered by Disqus