Python 开发人员经常创建一个新的虚拟环境来分离项目依赖,然后用 pip
、pipenv
等工具来管理它们。Poetry 是一个简化 Python 中依赖管理和打包的工具。这篇文章将向你展示如何在 Fedora 上使用 Poetry 来管理你的 Python 项目。
与其他工具不同,Poetry 只使用一个配置文件来进行依赖管理、打包和发布。这消除了对不同文件的需求,如 Pipfile
、MANIFEST.in
、setup.py
等。这也比使用多个工具更快。
下面详细介绍一下开始使用 Poetry 时使用的命令。
如果你已经使用 Fedora 32 或以上版本,你可以使用这个命令直接从命令行安装 Poetry:
$ sudo dnf install poetry
编者注:在 Fedora Silverblue 或 CoreOs上,Python 3.9.2 是核心提交的一部分,你可以用下面的命令安装 Poetry:
rpm-ostree install poetry
使用 new
命令创建一个新项目:
$ poetry new poetry-project
用 Poetry 创建的项目结构是这样的:
├── poetry_project
│ └── init.py
├── pyproject.toml
├── README.rst
└── tests
├── init.py
└── test_poetry_project.py
Poetry 使用 pyproject.toml
来管理项目的依赖。最初,这个文件看起来类似于这样:
[tool.poetry]
name = "poetry-project"
version = "0.1.0"
description = ""
authors = ["Kadermiyanyedi <kadermiyanyedi@hotmail.com>"]
[tool.poetry.dependencies]
python = "^3.9"
[tool.poetry.dev-dependencies]
pytest = "^5.2"
[build-system]
requires = ["poetry>=0.12"]
build-backend = "poetry.masonry.api"
这个文件包含 4 个部分:
如果你已经有一个项目,或者创建了自己的项目文件夹,并且你想使用 Poetry,请在你的项目中运行 init
命令。
$ poetry init
在这个命令之后,你会看到一个交互式的 shell 来配置你的项目。
如果你想创建一个虚拟环境或激活一个现有的虚拟环境,请使用以下命令:
$ poetry shell
Poetry 默认在 /home/username/.cache/pypoetry
项目中创建虚拟环境。你可以通过编辑 Poetry 配置来更改默认路径。使用下面的命令查看配置列表:
$ poetry config --list
cache-dir = "/home/username/.cache/pypoetry"
virtualenvs.create = true
virtualenvs.in-project = true
virtualenvs.path = "{cache-dir}/virtualenvs"
修改 virtualenvs.in-project
配置变量,在项目目录下创建一个虚拟环境。Poetry 命令是:
$ poetry config virtualenv.in-project true
使用 poetry add
命令为项目安装一个依赖:
$ poetry add django
你可以使用带有 --dev
选项的 add
命令来识别任何只用于开发环境的依赖:
$ poetry add black --dev
add
命令会创建一个 poetry.lock
文件,用来跟踪软件包的版本。如果 poetry.lock
文件不存在,那么会安装 pyproject.toml
中所有依赖项的最新版本。如果 poetry.lock
存在,Poetry 会使用文件中列出的确切版本,以确保每个使用这个项目的人的软件包版本是一致的。
使用 poetry install
命令来安装当前项目中的所有依赖:
$ poetry install
通过使用 --no-dev
选项防止安装开发依赖:
$ poetry install --no-dev
show
命令会列出所有可用的软件包。--tree
选项将以树状列出软件包:
$ poetry show --tree
django 3.1.7 A high-level Python Web framework that encourages rapid development and clean, pragmatic design.
├── asgiref >=3.2.10,<4
├── pytz *
└── sqlparse >=0.2.2
包含软件包名称,以列出特定软件包的详细信息:
$ poetry show requests
name : requests
version : 2.25.1
description : Python HTTP for Humans.
dependencies
- certifi >=2017.4.17
- chardet >=3.0.2,<5
- idna >=2.5,<3
- urllib3 >=1.21.1,<1.27
最后,如果你想知道软件包的最新版本,你可以通过 --latest
选项:
$ poetry show --latest
idna 2.10 3.1 Internationalized Domain Names in Applications
asgiref 3.3.1 3.3.1 ASGI specs, helper code, and adapters
本文转载自微信公众号「DBA闲思杂想录」,作者潇湘隐者。转载本文请联系DBA闲思...
提示:我提取了《xslt从入门到精通》中关于空格解释的核心部分,借以抛砖引玉,...
在HTML编辑器发布过程中,会出现一些自动生成的HTML标签,或者在留言板程序应用...
前言 如果你是或者你想成为一名合格的前端开发工作者,你必须知道JavaScript代码...
1、为什么要进行数据库收缩? SQL Server 数据库采取预先分配空间的方法来建立数...
一般情况下,很少会用php去执行linux命令,不过特殊情况下,你也许会用到这些函...
端点路由(Endpoint Routing)最早出现在ASP.NET Core2.2,在ASP.NET Core3.0提升...
需求:输入框中输入银行卡号(或其他)时,每4位自动加空格(如下图) 分析 方法...
当我们制作一个页面时,尤其是制作一个首页时,通常会设计一个可以链接到整个网...
这是学习TensorFlow过程中记录的一点笔记在此分享一下。 文章目录 TensorFlow简...