Python 依赖管理及打包三方库 Poetry
1. 简介
Poetry
是 Python
中用于依赖管理和打包的工具。它允许您声明项目所依赖的库,并将为您管理(安装/更新)它们。Poetry
提供了一个锁定文件以确保可重复安装,并且可以构建您的项目以进行分发。
Poetry
将所有的配置都放置在一个 toml
文件(pyproject.toml
)中,这些配置包括:依赖管理、构建、打包、发布。
作为一个传统虚拟环境的实现,Poetry
凭借其强大的依赖分析能力被大量项目所推荐的虚拟环境管理工具。
2. 安装卸载
2.1 安装(官方建议)
默认安装
curl -sSL https://install.python-poetry.org | python3 -
环境变量:
POETRY_HOME
:安装目录POETRY_PREVIEW
:是否安装预发布版本,如果需要,设置为 POETRY_PREVIEW=1POETRY_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/bin
在Unix
上%APPDATA%\Python\Scripts
在Windows
上$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"
。这是由创建工程时,运行 poetry
的 python
版本来决定的。
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.toml
, Poetry
使用中列出的确切版本 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
python3
是 python
解释器,相当于 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 删除虚拟环境
- 可以直接删除虚拟环境文件夹
- 通过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相关推荐
- Python依赖管理和打包工具poetry
poetry简介 poetry 是一个包管理和打包的工具. 在 Python 中,对于初学者来说,打包系统和依赖管理是非常复杂和难懂的. 以前是把需要的包和版本全部写在requirements.txt ...
- python语言依赖平台_poetry首页、文档和下载 - Python 依赖管理和打包工具 - OSCHINA - 中文开源技术交流社区...
poetry 是一个包管理和打包的工具. 在 Python 中,对于初学者来说,打包系统和依赖管理是非常复杂和难懂的.即使对于经验丰富的开发者,一个项目总是要同时创建多个文件: `setup.py` ...
- 三维点云学习(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 ...
- python 依赖管理 pipenv
pipenv pipenv是一个python打包工具,它使用pip.virtualenv 和 requirements.txt 解决一些与典型工作流相关的常见问题. pipenv 是python官方推 ...
- pycharm python 依赖管理_怎么解决pycharm license Acti的方法_python
这篇文章主要介绍了怎么解决pycharm license Acti的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 标题py ...
- python 处理 Excel 模块使用三方库的对比分析(xlrd/xlwt/xlutils/openpyxl)
xlrd- 读取 Excel 文件 xlwt- 写入 Excel 文件 xlutils - 操作 Excel 文件的实用工具,如复制.分割.筛选等(该领域的先驱) xlwt.wlrd .xlutils ...
- 在Windows第一次使用使用vcpkg来安装三方库,例如nanomsg、nng、libpqxx
从安装git开始记录 够早了吧 需要从github上找三方库来使用,看了许多教程后决定为后来者写点简单的流程.记得先装git,安装git教程如下: 到官网下载git添加链接描述 点击下载然后安装. 安 ...
- python三方库打包项目中_python项目生成及导入依赖的第三方库
mac下的应用程序发布 及 打包(Python写的脚本,可打包第三方库) 其实这个问题在网上能搜到大把的解决方案.大家的统一答案都是 otool -L yourapp.app/Contents/Mac ...
- python打包exe 带第三方库_Python三方库:PyInstaller(exe程序打包)
PyInstaller可以将Python程序打包成一个exe程序来独立运行,用户使用时只需要执行这个exe文件即可,不需要在机器上再安装Python及其他包就可运行了.另外,PyInstaller相较 ...
最新文章
- HttpURLConnection 发送post请求。并将结果以JSONObject对象返回的轮子
- Cheatsheet: 2010 04.26 ~ 04.30
- java之spring mvc之拦截器
- mysql过滤效率和java过滤效率_熔喷布过滤效率测试仪详解
- 模拟运行php,window_PHP+Javascript模拟Matrix画面, 直接存为*.php文件运行即 - phpStudy...
- 分布式的Key-Value存储系统Cassandra
- 10-9-用户登录控制
- 数据结构——顺序表的C语言代码实现
- windows10如何卸载edge浏览器 1809版本
- 【转】关于ATSC与DVB的比较
- Rancher Labs获2500万美元C轮融资
- 用 FFMPEG 合并 MP4 视频
- 数析三剑客 numpy pandas matplotlib 基础操作
- Mingw下使用FTD2XX进行FTDI的开发
- man fputc fputs putc putchar puts
- 剑指-4和7幸运数字 (幸运数字 4和7)
- 用户答疑:“我想做一个社区,如何进行社区的定位和推广?”
- 【经验】Office|重装后,PPT 2016后失去平滑等功能(解决方式:使用Office Tools Plus重新安装另一版本)
- Gateway网关基础配置
- PHP实现平台商品和京东价格做对比
热门文章
- 3gpp 中的AAC和AMR
- requests用法之爬取豆瓣排行
- QML+Qt音视频播放器
- [嘭嘭养成记]5. 基于蒙皮网格顶点绑定骨骼权重的模型切分
- 风投坑死创业者的“六大陷阱”
- 利用Matlab进行图像的编码与压缩(仿照jpeg)
- windows xp 下使用FileZilla密钥
- java epson指令集_EPSON机械手 SPEL+语言指令集
- 管理员权限弹窗只有否没有是
- 5-1 近似求PI (10 分)本题要求编写程序,根据下式求π的近似值,直到最后一项小于给定精度eps