1. 简介

PoetryPython 中用于依赖管理和打包的工具。它允许您声明项目所依赖的库,并将为您管理(安装/更新)它们。Poetry 提供了一个锁定文件以确保可重复安装,并且可以构建您的项目以进行分发。

Poetry 将所有的配置都放置在一个 toml 文件(pyproject.toml)中,这些配置包括:依赖管理、构建、打包、发布。

作为一个传统虚拟环境的实现,Poetry 凭借其强大的依赖分析能力被大量项目所推荐的虚拟环境管理工具。

2. 安装卸载

2.1 安装(官方建议)

默认安装

curl -sSL https://install.python-poetry.org | python3 -

环境变量:

  • POETRY_HOME:安装目录
  • POETRY_PREVIEW:是否安装预发布版本,如果需要,设置为 POETRY_PREVIEW=1
  • POETRY_VERSION:指定安装的版本
  • --git:从 git存储库中安装

安装示例

curl -sSL https://install.python-poetry.org | python3 - --git https://github.com/python-poetry/poetry.git@master
curl -sSL https://install.python-poetry.org | POETRY_VERSION=1.2.0 python3 -

2.2 配置环境变量

poetry安装程序在一个众所周知的、特定于平台的目录中创建一个包装器:

  • $HOME/.local/binUnix
  • %APPDATA%\Python\ScriptsWindows
  • $POETRY_HOME/bin如果 $POETRY_HOME设置

2.3 其它方式安装

pip install poetry

pip这种安装方式可能引起依赖包冲突。还可以考虑使用 pipx(3.6及之后的版本)或者 pipsi(3.6之前的版本)

安装后可以使用下面的命令确认安装成功:

poetry --version

2.4 更新 poetry

poetry self update                   # 更新到最新版本
poetry self update --preview  # 更新到预览版本
poetry self update 1.2.0        # 更新到指定的版本

注意:
self update命令仅在推荐安装程序安装 Poetry时有效。

2.5 卸载 poetry

curl -sSL https://install.python-poetry.org | python3 - --uninstall
curl -sSL https://install.python-poetry.org | POETRY_UNINSTALL=1 python3 -

3. 项目使用

3.1 创建项目

poetry new project_demo

新建项目的目录结构如下:

$ tree project_demo/
project_demo/
├── project_demo
│   └── __init__.py
├── pyproject.toml
├── README.md
└── tests└── __init__.py2 directories, 4 files

同时,项目下会自动生成 pyproject.toml文件,该文件的主要用途是依赖管理、构建、打包、发布,内容如下:

$ cat pyproject.toml
[tool.poetry]
name = "project-demo"
version = "0.1.0"
description = ""
authors = ["xxxx@163.com <xxxxx@163.com>"]
readme = "README.md"
packages = [{include = "project_demo"}][tool.poetry.dependencies]
python = "^3.8"[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

3.2 依赖管理

如果要向项目添加依赖项,可以在 tool.poetry.dependencies部分中指定它们。

[tool.poetry.dependencies]
pendulum = "^2.1"
loguru = "^0.6.0"

它采用包名称版本约束的映射。

在这里您可以列出项目需要的所有依赖包。 就像旧 requirements.txt 文件一样。 您可以手动完成此操作,然后调用命令 poetry install 以将其全部安装以用于软件包开发和工作目的。

您可以使用 add命令而不是手动修改文件。如果您使用 poetry add <dependency_name>安装依赖包 相当于使用pip install <dependency_name>

我们注意到这里指定了 python = "^3.8"。这是由创建工程时,运行 poetrypython版本来决定的。

3.3 修改安装包源

pyproject.toml文件末尾添加

[[tool.poetry.source]]
name = "aliyun"
url = "https://mirrors.aliyun.com/pypi/simple"
default = true

用于指定安装三方库时的源。当配置的源中没有指定的包时会到 PyPI 中搜索。

使用这种方式时,有注意一个情况,就是在第一次运行后,会生成一个 poetry.lock的文件,将第三方库的版本锁定,这意味着,后面的开发人员根据 pyproject.toml安装的时候,第三方库的版本是固定的。

poetry.lock文件存在时运行会解析并安装其中列出的所有依赖项 pyproject.tomlPoetry 使用中列出的确切版本 poetry.lock来确保包版本对于在您的项目中工作的每个人都是一致的。

poetry.lock文件会阻止您自动获取最新版本的依赖项。要更新到最新版本,请使用 update命令。这将获取最新的匹配版本并使用新版本更新锁定文件。(这相当于删除 poetry.lock文件并 install重新运行。)

3.4 已有项目初始化

Poetry 可用于“初始化”预填充目录,而不是创建新项目。在目录中以交互方式创建 pyproject.toml文件 pre-existing-project

cd pre-existing-project
poetry init

根据它的提示输入你的项目信息,不确定的内容就按下 Enter 使用默认值,后续也可以手动更新。

3.5 运行项目

要运行您的脚本,只需使用

poetry run python main.py

每次在虚拟环境下做点啥事,命令前面都要加上 poetry run,有点太麻烦了。
这时可以使用下面这条命令,直接激活当前的虚拟环境同时:

poetry shell  # 进入
exit  # 退出

3.6 列出可用包

要列出所有可用的包,可用下面命令:

poetry show

如果要查看某个包的详细信息,可以传递包名。

$ poetry show loguruname         : loguru                                version      : 0.6.0                                 description  : Python logging made (stupidly) simple dependencies- colorama >=0.3.4- win32-setctime >=1.0.0

4. 虚拟环境管理

4.1 创建虚拟环境

4.1.1 方式一

当参数 **virtualenvs.create=true** (默认)时,执行 **poetry install/add/remove** 时会检测当前项目是否有虚拟环境,没有就自动创建(确保当前目录有 pyproject.toml 文件)。

这个命令会读取 pyproject.toml 中的所有依赖(包括开发依赖)并安装,如果不想安装开发依赖,可以附加 --no-dev 选项。如果项目根目录有 poetry.lock 文件,会安装这个文件中列出的锁定版本的依赖。

4.1.2 方式二

指定创建虚拟环境时使用的 Python 解释器版本,如下:

poetry env use python3

python3python解释器,相当于 cmd下输入 python3

还可以指定解释器路径来创建:

poetry env use /usr/bin/pythonpoetry env use /home/wohu/.miniconda3/envs/py37/bin/python

4.2 管理虚拟环境

执行 poetry 开头的命令并不需要激活虚拟环境,因为它会自动检测到当前虚拟环境。如果你想快速在当前目录对应的虚拟环境中执行命令,可以使用 poetry run

poetry run python main.py

如果你想显式的激活虚拟环境,使用 poetry shell 命令:

poetry shell

其它相关命令

poetry env info                              # 查看虚拟环境信息
poetry env list                             # 显示虚拟环境所有列表
poetry env list --full-path     # 显示虚拟环境绝对路径

4.3 删除虚拟环境

  1. 可以直接删除虚拟环境文件夹
  2. 通过poetry env remove命令删除
# 执行删除虚拟环境时,需要指定对应的解析器版本
poetry env remove python3# 移除指定的环境
poetry env remove /full/path/to/python
poetry env remove python3.7
poetry env remove 3.7
poetry env remove test-O3eWbxRl-py3.7poetry env remove --all  # 移除所有的环境

4.4 查看python版本

poetry run python -V

5. 依赖包管理

5.1 安装依赖包

可以使用 install命令直接解析并安装 pyproject.toml的依赖包

poetry install

也可以可以使用 add命令来安装 Python工具包,

poetry add numpy

还可以,通过添加配置参数 --dev来区分不同环境下的依赖包。

poetry add pytest --dev

poetry add依赖安装常见命令如下表格:

5.2 更新、卸载、查看依赖包

poetry update                    # 更新所有锁定版本的依赖包
poetry update numpy     # 更新指定依赖包
poetry remove numpy     # 卸载依赖包poetry show                      # 查看项目安装的依赖
poetry show --outdated  # 查看可以更新的依赖
poetry show --tree          # 以树形结构查看项目安装的依赖关系

6. 环境配置

6.1 配置参数

Poetry提供了全局配置 config.toml和特定项目的配置 poetry.toml

poetry config virtualenvs.create true                                # 全局配置
poetry config virtualenvs.create true --local               # 特定项目配置
poetry config virtualenvs.create --unset                        # 重置全局配置
poetry config virtualenvs.create --local --unset        # 重置项目配置

列出当前项目的配置

poetry config --list
$ poetry config --list
cache-dir = "/home/wohu/.cache/pypoetry"
experimental.new-installer = true
experimental.system-git-client = false
installer.max-workers = null
installer.no-binary = null
installer.parallel = true
repositories.aliyun.url = "https://mirrors.aliyun.com/pypi/simple"
virtualenvs.create = true
virtualenvs.in-project = null
virtualenvs.options.always-copy = false
virtualenvs.options.no-pip = false
virtualenvs.options.no-setuptools = false
virtualenvs.options.system-site-packages = false
virtualenvs.path = "{cache-dir}/virtualenvs"  # /home/wohu/.cache/pypoetry/virtualenvs
virtualenvs.prefer-active-python = false
virtualenvs.prompt = "{project_name}-py{python_version}"

Poetry支持的常用参数有:

6.2 相关操作

# Poetry 提供了通过将--local选项传递给config命令来获得特定于项目的设置的能力
poetry config virtualenvs.create false --local# 列出当前的配置
poetry config --list# 显示特定配置的值
poetry config virtualenvs.path# 修改特定配置的值
poetry config virtualenvs.path D:\\poetryCache# 移除某一配置默认的值
poetry config virtualenvs.path --unset

7. 常用命令汇总

poetry 提供了一系列覆盖整个开发流程的命令,这些命令使用简单,如表所示:

导出 requirements.txt 文件

poetry export --without-hashes  --output requirements.txt

8. 参考文档

https://python-poetry.org/docs/
https://zhuanlan.zhihu.com/p/445952026
https://www.kancloud.cn/madxzb/python-guide/2248089
https://blog.csdn.net/qq_62789540/article/details/127353963

Python 依赖管理及打包三方库 Poetry相关推荐

  1. Python依赖管理和打包工具poetry

    poetry简介 poetry 是一个包管理和打包的工具. 在 Python 中,对于初学者来说,打包系统和依赖管理是非常复杂和难懂的. 以前是把需要的包和版本全部写在requirements.txt ...

  2. python语言依赖平台_poetry首页、文档和下载 - Python 依赖管理和打包工具 - OSCHINA - 中文开源技术交流社区...

    poetry 是一个包管理和打包的工具. 在 Python 中,对于初学者来说,打包系统和依赖管理是非常复杂和难懂的.即使对于经验丰富的开发者,一个项目总是要同时创建多个文件: `setup.py` ...

  3. 三维点云学习(4)5-DBSCNA python 复现-3-kd-tree radius NN 三方库 scipy 与 sklearn速度比较

    三维点云学习(4)5-DBSCNA python 复现-3-kd-tree radius NN 三方库 scipy 与 sklearn速度比较 import from scipy.spatial im ...

  4. python 依赖管理 pipenv

    pipenv pipenv是一个python打包工具,它使用pip.virtualenv 和 requirements.txt 解决一些与典型工作流相关的常见问题. pipenv 是python官方推 ...

  5. pycharm python 依赖管理_怎么解决pycharm license Acti的方法_python

    这篇文章主要介绍了怎么解决pycharm license Acti的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 标题py ...

  6. python 处理 Excel 模块使用三方库的对比分析(xlrd/xlwt/xlutils/openpyxl)

    xlrd- 读取 Excel 文件 xlwt- 写入 Excel 文件 xlutils - 操作 Excel 文件的实用工具,如复制.分割.筛选等(该领域的先驱) xlwt.wlrd .xlutils ...

  7. 在Windows第一次使用使用vcpkg来安装三方库,例如nanomsg、nng、libpqxx

    从安装git开始记录 够早了吧 需要从github上找三方库来使用,看了许多教程后决定为后来者写点简单的流程.记得先装git,安装git教程如下: 到官网下载git添加链接描述 点击下载然后安装. 安 ...

  8. python三方库打包项目中_python项目生成及导入依赖的第三方库

    mac下的应用程序发布 及 打包(Python写的脚本,可打包第三方库) 其实这个问题在网上能搜到大把的解决方案.大家的统一答案都是 otool -L yourapp.app/Contents/Mac ...

  9. python打包exe 带第三方库_Python三方库:PyInstaller(exe程序打包)

    PyInstaller可以将Python程序打包成一个exe程序来独立运行,用户使用时只需要执行这个exe文件即可,不需要在机器上再安装Python及其他包就可运行了.另外,PyInstaller相较 ...

最新文章

  1. HttpURLConnection 发送post请求。并将结果以JSONObject对象返回的轮子
  2. Cheatsheet: 2010 04.26 ~ 04.30
  3. java之spring mvc之拦截器
  4. mysql过滤效率和java过滤效率_熔喷布过滤效率测试仪详解
  5. 模拟运行php,window_PHP+Javascript模拟Matrix画面, 直接存为*.php文件运行即 - phpStudy...
  6. 分布式的Key-Value存储系统Cassandra
  7. 10-9-用户登录控制
  8. 数据结构——顺序表的C语言代码实现
  9. windows10如何卸载edge浏览器 1809版本
  10. 【转】关于ATSC与DVB的比较
  11. Rancher Labs获2500万美元C轮融资
  12. 用 FFMPEG 合并 MP4 视频
  13. 数析三剑客 numpy pandas matplotlib 基础操作
  14. Mingw下使用FTD2XX进行FTDI的开发
  15. man fputc fputs putc putchar puts
  16. 剑指-4和7幸运数字 (幸运数字 4和7)
  17. 用户答疑:“我想做一个社区,如何进行社区的定位和推广?”
  18. 【经验】Office|重装后,PPT 2016后失去平滑等功能(解决方式:使用Office Tools Plus重新安装另一版本)
  19. Gateway网关基础配置
  20. PHP实现平台商品和京东价格做对比

热门文章

  1. 3gpp 中的AAC和AMR
  2. requests用法之爬取豆瓣排行
  3. QML+Qt音视频播放器
  4. [嘭嘭养成记]5. 基于蒙皮网格顶点绑定骨骼权重的模型切分
  5. 风投坑死创业者的“六大陷阱”
  6. 利用Matlab进行图像的编码与压缩(仿照jpeg)
  7. windows xp 下使用FileZilla密钥
  8. java epson指令集_EPSON机械手 SPEL+语言指令集
  9. 管理员权限弹窗只有否没有是
  10. 5-1 近似求PI (10 分)本题要求编写程序,根据下式求π的近似值,直到最后一项小于给定精度eps