[针对初学者] 诗歌入门!从安装方法,命令到软件包管理等,全面解释说明
诗歌是什么?
正如公式文件所述,Poetry是管理Python软件包的工具。通过使用Poetry,可以方便地根据版本更新和安装与软件包相关的其他软件包。使用Poetry安装的软件包位于Virtualenv环境中,因此在执行与软件包相关的命令时,应通过Poetry进行操作(后面会详细介绍)。
诗歌是Python中的依赖管理和打包工具。它允许您声明项目所依赖的库,并为您管理(安装/更新)它们。诗歌提供锁文件以确保可重复安装,并可以构建您的项目进行分发。
诗歌的安装
请执行下面公式中提到的命令。
curl -sSL https://install.python-poetry.org | python3 -
根据情况,将显示如下内容。
curl -sSL https://install.python-poetry.org | python3 -
Retrieving Poetry metadata
# Welcome to Poetry!
This will download and install the latest version of Poetry,
a dependency and package manager for Python.
It will add the `poetry` command to Poetry's bin directory, located at:
/Users/<ユーザ名>/.local/bin
You can uninstall at any time by executing this script with the --uninstall option,
and these changes will be reverted.
Installing Poetry (1.2.0): Done
Poetry (1.2.0) is installed now. Great!
To get started you need Poetry's bin directory (/Users/<ユーザ名>/.local/bin) in your `PATH`
environment variable.
Add `export PATH="/Users/<ユーザ名>/.local/bin:$PATH"` to your shell configuration file.
Alternatively, you can call Poetry explicitly with `/Users/<ユーザ名>/.local/bin/poetry`.
You can test that everything is set up by executing:
`poetry --version`
执行以下命令
export PATH="/Users/<ユーザ名>/.local/bin:$PATH"
执行后,将以下内容添加到.zshrc文件中。
export PATH="$HOME/.local/bin:$PATH"
关闭终端后重新启动。
poetry --version
输入”と”,然后出现版本信息即算成功!
Poetry (version 1.2.1)
哦-我的-zsh
如果在oh-my-zsh中安装poetry插件,将会丰富命令补全功能。首先,输入以下命令。
mkdir $ZSH_CUSTOM/plugins/poetry
poetry completions zsh > $ZSH_CUSTOM/plugins/poetry/_poetry
将poetry添加到.zshrc文件的plugins中。
plugins(
poetry
...
)
主要命令
以下是主要的命令列举。
新建项目
poetry new
将Poetry引入现有项目。
poetry init
执行此操作后,您可以在现有项目中使用Poetry。例如,如果是Django项目,则需要将项目名称指定为[tool.poetry]的name才能正常运行程序,所以需要注意。
[tool.poetry]
name = "<プロジェクト名>"
version = "0.0.1"
description = ""
authors = ["shun198 <メールアドレス>"]
readme = "README.md"
pyproject.toml和poetry.lock
使用Poetry安装或更新软件包时
-
- pyproject.toml
- poetry.lock
在这里提到
诗歌的命令列表
添加套餐
poetry add <パッケージ名>
如果指定安装软件包,则会一同安装相关软件包。
poetry add redis
Using version ^4.3.4 for redis
Updating dependencies
Resolving dependencies... (0.9s)
Writing lock file
Package operations: 6 installs, 0 updates, 0 removals
• Installing pyparsing (3.0.9)
• Installing wrapt (1.14.1)
• Installing async-timeout (4.0.2)
• Installing deprecated (1.2.13)
• Installing packaging (21.3)
• Installing redis (4.3.4)
将安装包分开为生产环境和开发环境使用的两个版本。
不用担心,Poetry可以让您按组安装软件包,以下是一个选项:
-
- Pytest関連のもの
-
- formatter
- django-debug-toolbarなどデバッグ用
将诸如dev等的程序包放置在开发环境组中。
[tool.poetry.dependencies]
python = "^3.10"
Django = "^4.1.2"
djangorestframework = "^3.14.0"
drf-spectacular = "^0.24.2"
mysqlclient = "^2.1.1"
gunicorn = "^20.1.0"
drf-nested-routers = "^0.93.4"
celery = "^5.2.7"
django-celery-beat = "^2.4.0"
redis = "^4.3.4"
django-cors-headers = "^3.13.0"
Authlib = "^1.1.0"
django-filter = "^22.1"
boto3 = "^1.26.22"
django-ses = "^3.2.2"
django-storages = "^1.13.1"
[tool.poetry.group.dev.dependencies]
pytest = "^7.1.3"
pytest-cov = "^4.0.0"
pytest-django = "^4.5.2"
pytest-sugar = "^0.9.6"
pytest-xdist = "^3.0.2"
django-debug-toolbar = "^3.8.1"
pytest-custom-exit-code = "^0.3.0"
pytest-html = "^3.2.0"
allure-pytest = "^2.12.0"
black = "^22.10.0"
isort = "^5.11.4"
django-extensions = "^3.2.1"
当要在特定的群体中安装软件包时。
poetry add <パッケージ名> --group <グループ名>
我打算将pylint-django插件添加到开发环境的dev组中。
poetry add pylint-django --group dev
那么,pylint-django将安装在dev组中,具体如下:
[tool.poetry.group.dev.dependencies]
pylint-django = "^2.5.3"
此外,您还可以在 [tool.poetry.group.dev.dependencies] 下直接添加用于开发的软件包
安装软件包
默认情况下将安装所有的软件包。
poetry install
此外,您也可以按照组别进行安装。
当你只想要安装特定的群体时
poetry install --only <グループ名>
您也可以指定多个软件包,如下所示。
poetry install --only test,docs
除了特定的群组外安装包时
poetry install --without <グループ名>
例如,在Stg环境和Prd环境中,我认为不需要安装诸如Pytest和django-debug-toolbar之类的测试和调试工具包。
您也可以将测试和调试工具包放入dev组,并在除dev之外的组中安装其他包来使用。
poetry install --without dev
更新软件包
poetry update <パッケージ名>
删除软件包
poetry remove <パッケージ名>
另外,您也可以直接从pyproject.toml文件中删除包以实现删除。
诗歌自我更新
poetry self update
通过诗歌实施命令
poetry run <コマンド>
使用Django或其他Web框架时,需要通过Poetry中的Python来执行命令,因此需要先输入 “poetry run”,然后再输入命令。
poetry run python manage.py makemigrations
显示包的列表、版本和详细信息
列表展示
poetry show
执行此命令将显示已安装软件包的列表。
Django 4.1.2 A high-level Python web framework that encourages rapid development and clean, pragmatic design.
djangorestframework 3.14.0 Web APIs for Django, made easy.
drf-nested-routers 0.93.4 Nested resources for the Django Rest Framework
展示细节
指定包名后将显示详细信息。
poetry show <パッケージ名>
poetry show gunicorn
name : gunicorn
version : 20.1.0
description : WSGI HTTP Server for UNIX
dependencies
- setuptools >=3.0
poetry.lock和pyproject.toml的同步
更新 poetry.lock 和 pyproject.toml 使它们保持一致。
poetry lock
确认Poetry的路径
poetry env info
执行这个命令可以确认本地和虚拟环境中Python的PATH。在容器中进行远程调试时,必须将Python解释器指定为Poetry的路径,否则无法运行,所以我经常使用这个命令。
Virtualenv
Python: 3.10.5
Implementation: CPython
Path: /Users/shun/Library/Caches/pypoetry/virtualenvs/api-vJJX1F0w-py3.10
Executable: /Users/shun/Library/Caches/pypoetry/virtualenvs/api-vJJX1F0w-py3.10/bin/python
Valid: True
System
Platform: darwin
OS: posix
Python: 3.10.5
Path: /Users/shun/.pyenv/versions/3.10.5
Executable: /Users/shun/.pyenv/versions/3.10.5/bin/python3.10
如果您对远程调试感兴趣,我希望您也能阅读下面的文章。
把每个软件包所需的所有设置都整合到pyproject.toml文件中!
例如,Pytest的选项可以在pytest.ini文件中进行记录,但也可以在pyproject.toml文件中进行记录。与每次安装不同的包时创建专用文件并记录选项相比,将其集中在pyproject.toml中可以更轻松和便利地管理。
黑色
[tool.black]
line-length = 79
include = '\.py$'
exclude = '''
(
/(
\.eggs # exclude a few common directories in the
| \.git # root of the project
| \.hg
| \.mypy_cache
| \.tox
| \.venv
| _build
| buck-out
| build
| dist
)/
)
'''
分类
设置Import的格式以优先使用Black,否则会与Black发生冲突。
[tool.isort]
profile = "black"
Pytest的中文释义
[tool.pytest.ini_options]
DJANGO_SETTINGS_MODULE = "project.settings"
addopts = "-v -s --durations=0"
在使用addopts时,请将选项用双引号括起来。
另外,使用pytest-django时,需要使用名为DJANGO_SETTINGS_MODULE的环境变量,可以在这里进行记录。
总结
许多公司在实际工作中都使用诗歌比我想象的更加方便,所以有必要了解一些使用方法和原理。(Docker喜欢requirements.txt的文件。)。其他命令请参考官方文档。
请参考