使用poetry来管理python项目
使用poetry来管理python项目,快速的构建开发环境,快速的发布,以及进行第三方库的依赖管理。
1.背景
Poetry 是一个Python 中的好用的包管理工具。在 Python 中,打包系统和依赖管理非常复杂:一个项目经常要同时创建多个文件,例如:
setup.py
requirements.txt
setup.cfg
MANIFEST.in
Pipfile
基于此, poetry 将所有的配置都放置在一个 toml 文件中,包括:依赖管理、构建、打包、发布等,可谓是简单方便。
2. 安装
环境:windows10 + Python 3.8.10 + Python 2.7
- 注:如何并存多个版本的python,见之前的文章 windows上同时安装多个版本的python
pipx 或者 pip 进行安装:
1
2pipx install poetry ---推荐
pip install poetry- 注: pipx的安装与介绍见之前的文章 使用pipx来运行独立的python应用
配置全局环境变量(可选,只是为更好的使用)
1
2
3
4
5
6
7
8
9
10
11打开cmd窗口
1.查看当前的poetry环境变量:
poetry config --list
cache-dir = "C:\\Users\\zmr\\AppData\\Local\\pypoetry\\Cache"
experimental.new-installer = true
installer.parallel = true
virtualenvs.create = true
virtualenvs.in-project = false
virtualenvs.path = "{cache-dir}\\virtualenvs" # C:\\Users\\zmr\\AppData\\Local\\pypoetry\\Cache\\virtualenvs配置项 说明 cache-dir poetry使用的缓存目录的路径 默认值: macOS: ~/Library/Caches/pypoetry Windows: C:\Users< username >\Appdata\Local\pypoetry\Cache Unix: ~/.cache/pypoetry virtualenvs.create 默认值为true,如果执行 poetry install/poetry add时没有虚拟环境,就自动创建一个虚拟环境,设置为false的话,当虚拟环境不存在时,会将包安装到系统环境 virtualenvs.in-project 默认值为false,设置为true的话,会在当前项目目录下创建虚拟环境 virtualenvs.path 虚拟环境的路径,默认路径 {cache-dir}\virtualenvs 根据需求做以下的调整
1
2
3
4
51. 更改缓存目录到其他盘,避免C盘占用
$ poetry config cache-dir E:\TEMP\cache\poetry\cache
2.更改为在当前位置创建虚拟环境,更容易管理
$ poetry config virtualenvs.in-project true确认更改是生效的
1
2
3
4
5
6
7
8$ poetry config --list
cache-dir = "E:\\TEMP\\cache\\poetry\\cache"
experimental.new-installer = true
installer.parallel = true
virtualenvs.create = true
virtualenvs.in-project = true
virtualenvs.path = "{cache-dir}\\virtualenvs" # E:\TEMP\cache\poetry\cache\virtualenvs
3. 基本使用
3.1 添加poetry管理
已有的项目,直接在当前项目的根目录执行
poetry init
即能根据你回答的问题生成pyproject.toml
文件1
2
3
4
5
6
7
8
9
10
11
12
13
14
15[tool.poetry]
name = "demo"
version = "0.1.0"
description = ""
authors = ["xxx <xxx@126.com>"]
[tool.poetry.dependencies]
python = "^3.8"
[tool.poetry.dev-dependencies]
[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"如果你想创建一个新的 Python 项目,使用
poetry new <文件夹名称>
命令可以创建一个项目模板:1
2
3
4
5
6
7
8
9
10
11$ poetry new foo
这会创建一个这样的项目结构:
foo
├── pyproject.toml
├── README.rst
├── foo
│ └── __init__.py
└── tests
├── __init__.py
└── test_foo.py
- 注:如果你想使用 src 文件夹,可以添加
--src
选项,这会把程序包嵌套在 src 文件夹里。
3.2 创建虚拟环境
使用
poetry install
命令创建虚拟环境(确保当前目录有 pyproject.toml 文件):1
poetry install
如果系统中既有Python2又有Python3,且项目既支持Python2也支持Python3,那poetry会优先使用Python2。
利用
poetry env use
创建这个命令,可以指定创建虚拟环境时使用的Python解释器版本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15poetry env use python2
查看当前的环境信息
poetry env info
Virtualenv
Python: 2.7.10
Implementation: CPython
Path: E:\git-code\behave-db\.venv
Valid: True
System
Platform: win32
OS: nt
Python: d:\program files\python27
3.3 安装包、卸载包
使用 poetry add 命令来安装一个包:
1 | 安装包 |
3.4 锁定依赖
1 | $ poetry lock |
3.4 激活虚拟环境
1 | poetry shell |
3.5 删除环境
1 | poetry env remove python3.7 |
3.6 build:构建
1 | $ poetry build |
3.7 publish:发布到仓库
1 | 将使用build命令生成的包发布到远程仓库,默认上传至PYPI |
4. pyproject.toml 配置文件的基本说明
1 | # 设置 PyPI 镜像源,默认是走的pip的pip.ini设置的来源 |