介绍
Poetry是Python的依赖管理器,它还能够构建和包装您的Python项目以进行分布。作为依赖管理器,它配备了维护一致和包含虚拟环境的工具。
在本教程中,您将使用官方安装脚本安装诗歌,设置一个虚拟环境的诗歌项目,然后添加和安装项目的依赖。
前提条件
- Ubuntu 22.04 服务器,根据我们的 Ubuntu 22.04 初始服务器设置指南设置,具有非root 的用户,具有
sudo
特权和启用防火墙。
步骤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
进行专门的安装。
结论
在本教程中,您已安装了诗歌,并创建了一个诗歌项目,无论是从头开始还是在现有项目中。您还添加了依赖,然后在虚拟环境中安装了这些依赖。