Poetry

Poetry #

Poetry是一个用于Python的依赖管理打包工具。可以声明项目所依赖的库,管理(安装/更新)这些库。Poetry提供了一个poetry.lock以确保依赖被可重复的安装,使用Poetry还可以构建的项目以进行分发。

安装Poetry #

使用Poetry创建项目 #

创建项目 #

创建项目:

1poetry new --src foo
2Created package foo in foo

查看项目目录结构:

1tree foo
2foo
3├── pyproject.toml
4├── README.md
5├── src
6│   └── foo
7│       └── __init__.py
8└── tests
9    └── __init__.py

进入项目目录:

1cd foo

创建虚拟环境 #

默认情况下,poetry 会在全局虚拟环境目录(例如$HOME/.cache/pypoetry/virtualenvs)中为项目创建和管理虚拟环境。 一般来说都希望将虚拟环境放在项目目录中,可以通过poetry.toml配置文件中的[virtualenvs]部分中 in-project = true 来实现。 通过下面的命令完成这个配置,如果poetry.toml文件不存在会创建此文件。

更多poetry.toml的配置可参考这里
1poetry config virtualenvs.in-project true --local
1cat poetry.toml
2[virtualenvs]
3in-project = true

这样做的好处是:

  • 便于管理和清理:虚拟环境与项目目录绑定,更容易管理和清理项目及其依赖。
  • 项目隔离:确保每个项目使用独立的虚拟环境,避免不同项目之间的依赖冲突。
  • 便于版本控制:可以选择将.venv文件夹添加到.gitignore中,以避免将虚拟环境文件提交到版本控制系统。

选择期望使用的python版本创建虚拟环境:

1poetry env use /usr/bin/python3.11

会在项目的.venv目录中创建好虚拟环境。

pypi源配置 #

1poetry source add --priority=primary private-pypi http://mirrors.aliyun.com/pypi/simple/
2# poetry source add --priority=primary private-pypi https://pypi.example.com/repository/pypi-public/simple

如果指定的pypi是私有仓库,并且开启了认证,可以使用下面的方法为私有pypi指定用户名和密码:

1poetry config http-basic.private-pypi <username>

用户密码会被明文存储在~/.config/pypoetry/auth.toml中。

另外还可以通过设置~/.netrc文件,设置这个文件同时对poetry和pip有效。

1vi ~/.netrc
2machine pypi.example.com
3login theuser
4password changeme
5
6chown $USER ~/.netrc
7chmod 0600 ~/.netrc

顺便配置一下pip默认使用私有仓库

也可同时配置一下pip默认使用私有仓库(注意这个配置的是pip的默认源,而不是poetry的,因为平时也会经常使用pip安装东西),具体可参考https://pip.pypa.io/en/stable/topics/configuration/。 在Unix系统可在以下位置配置pip.conf文件: * Global /etc/pip.conf * User $HOME/.config/pip/pip.conf * Site $VIRTUAL_ENV/pip.conf

1[global]
2timeout = 120
3index-url = https://https://pypi.example.com/repository/pypi-public/simple

添加依赖 #

项目创建好了,可以为项目添加依赖了。

1poetry add jinja2 -vvv

执行后会在pyproject.toml中的[tool.poetry.dependencies]下添加依赖,同时会生成poetry.lock

© 2024 青蛙小白
comments powered by Disqus