[针对初学者] 诗歌入门!从安装方法,命令到软件包管理等,全面解释说明

诗歌是什么?

正如公式文件所述,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
	...
	)
スクリーンショット 2022-10-07 16.59.01.png

主要命令

以下是主要的命令列举。

新建项目

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的文件。)。其他命令请参考官方文档。

请参考

 

广告
将在 10 秒后关闭
bannerAds