Python依赖管理和打包工具poetry
poetry简介
poetry 是一个包管理和打包的工具。
在 Python 中,对于初学者来说,打包系统和依赖管理是非常复杂和难懂的。
以前是把需要的包和版本全部写在requirements.txt中,使用requirements.txt来进行管理。
即使对于经验丰富的开发者,一个项目总是要同时创建多个包管理的文件才能很好完成包的管理:
setup.py
requirements.txt
setup.cfg
MANIFEST.in
最新的Pipfile
为了解决多个文件造成的包管理复杂,poetry将所有的配置都放置在一个 toml 文件中,这些配置包括:依赖管理、构建、打包、发布。
poetry 的灵感来自于其他语言的一些工具: composer(PHP) 和 cargo (Rust) 。
如何配置
poetry 的项目配置文件是 pyproject.toml ,一个简单的示例文件如下:
[tool.poetry]
name = "poetry"
version = "0.11.5"
description = "Python dependency management and packaging made easy."
authors = ["Sébastien Eustace <sebastien@eustace.io>"
]
license = "MIT"readme = "README.md"homepage = "https://poetry.eustace.io/"
repository = "https://github.com/sdispater/poet"
documentation = "https://poetry.eustace.io/docs"keywords = ["packaging", "dependency", "poetry"]classifiers = ["Topic :: Software Development :: Build Tools","Topic :: Software Development :: Libraries :: Python Modules"
]# Requirements
[tool.poetry.dependencies]
python = "~2.7 || ^3.4"
cleo = "^0.6.7"
requests = "^2.18"
cachy = "^0.2"
requests-toolbelt = "^0.8.0"
jsonschema = "^2.6"
pyrsistent = "^0.14.2"
pyparsing = "^2.2"
cachecontrol = { version = "^0.12.4", extras = ["filecache"] }
pkginfo = "^1.4"
html5lib = "^1.0"
shellingham = "^1.1"
tomlkit = "^0.4.4"# The typing module is not in the stdlib in Python 2.7 and 3.4
typing = { version = "^3.6", python = "~2.7 || ~3.4" }# Use pathlib2 for Python 2.7 and 3.4
pathlib2 = { version = "^2.3", python = "~2.7 || ~3.4" }
# Use virtualenv for Python 2.7 since venv does not exist
virtualenv = { version = "^16.0", python = "~2.7" }[tool.poetry.dev-dependencies]
pytest = "^3.4"
pytest-cov = "^2.5"
mkdocs = "^1.0"
pymdown-extensions = "^4.9"
pygments = "^2.2"
pytest-mock = "^1.9"
pygments-github-lexers = "^0.0.5"
black = { version = "^18.3-alpha.0", python = "^3.6" }
pre-commit = "^1.10"
tox = "^3.0"[tool.poetry.scripts]
poetry = "poetry.console:main"
可使用的管理命令
poetry 提供了一系列覆盖整个开发流程的命令,这些命令使用简单:
#名称 功能
poetry new #创建一个项目脚手架,包含基本结构、pyproject.toml 文件
poetry init #基于已有的项目代码创建 pyproject.toml 文件,支持交互式填写
poetry install #安装依赖库
poetry update #更新依赖库
poetry add #添加依赖库
poetry remove #移除依赖库
poetry show #查看具体依赖库信息,支持显示树形依赖链
poetry build #构建 tar.gz 或 wheel 包
poetry publish #发布到 PyPI
poetry run #运行脚本和代码
poetry官网
github
可能遇到的问题–not found file
需要注意的是 文件夹包名需要是与项目名对应,项目名用横杠,文件夹包名用下划线,两者要与toml文件中的项目名相对应。
比如
项目名为 test-project
则文件夹包名为 test_project
toml文件中的项目名也使用横杠的格式 test-project
Python依赖管理和打包工具poetry相关推荐
- python语言依赖平台_poetry首页、文档和下载 - Python 依赖管理和打包工具 - OSCHINA - 中文开源技术交流社区...
poetry 是一个包管理和打包的工具. 在 Python 中,对于初学者来说,打包系统和依赖管理是非常复杂和难懂的.即使对于经验丰富的开发者,一个项目总是要同时创建多个文件: `setup.py` ...
- Python 依赖管理及打包三方库 Poetry
1. 简介 Poetry 是 Python 中用于依赖管理和打包的工具.它允许您声明项目所依赖的库,并将为您管理(安装/更新)它们.Poetry 提供了一个锁定文件以确保可重复安装,并且可以构建您的项 ...
- python 依赖管理 pipenv
pipenv pipenv是一个python打包工具,它使用pip.virtualenv 和 requirements.txt 解决一些与典型工作流相关的常见问题. pipenv 是python官方推 ...
- Python在window平台打包工具pyinstaller (三十五)
Java 一次编译到处运行,Python没有这么好本事,但是也有一个pyinstaller可以打包exe,在window平台下运行 文章目录 pyinstaller 参数 计算机小助手例子 注意点: ...
- pycharm python 依赖管理_怎么解决pycharm license Acti的方法_python
这篇文章主要介绍了怎么解决pycharm license Acti的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 标题py ...
- linux go vendor目录,Go 包依赖管理工具 —— govendor
govendor 是一个基于 vendor 机制实现的 Go 包依赖管理命令行工具.与原生 vendor 无侵入性融合,也支持从其他依赖管理工具迁移,可以很方便的实现同一个包在不同项目中不同版本.以及 ...
- 关于 C++ 依赖管理
有经验的程序员,不论所用何种语言,对代码依赖都不会陌生.代码无论是依赖于内部依赖关系,还是依赖于外部库或框架,通常都不会孤立运行.代码的重复使用,亦即使用现有代码的做法,是提升开发效率的重要工具.不过 ...
- webpack打开项目命令_webpack前端模块打包工具基本使用的详细记录(一)
webpack简介 我们都知道,Webpack 是当下最热门的前端资源模块化管理和打包工具.它可以将许多松散的模块按照依赖和规则打包成符合生产环境部署的前端资源.还可以将按需加载的模块进行代码分隔,等 ...
- 八十八、Webpack打包工具
@Author:Runsen 微信原文:你知道那些长长的js怎么来的吗? 今天不知道写啥东西,随便写了点,好水啊 大家知不知道每次用js逆向时,发现那些长长的js代码,那可不是人写的.那到底是怎么来的 ...
最新文章
- mysql 修复_修复崩溃的Mysql
- redis基本操作和在springboot中的使用
- 匈牙利命名法的优缺点
- 编写有效用例电子版_剖析用例设计方法的使用
- 用python批量执行VBA代码
- Java泛型的个人理解
- char强制类型转换为int_彻底理解Java中的基本数据类型转换(自动、强制、提升)...
- 段落超出,省略...
- Lost Cows POJ 2182 思维+巧法
- JDE学习report和from总结
- 网页版bpc电波对时_BPC电波对时app下载|BPC电波对时安卓版下载 v1.04 - 跑跑车安卓网...
- Ubuntu16.04上升级NVIDIA显卡驱动及安装CUDA10.0操作步骤
- spark写出分布式的训练算法_Spark on Angel
- 在网页前端调用exe程序并传参
- C语言程序设计第五版谭浩强课后答案 第九章习题答案
- npm,cnpm的基本使用
- python 喜马拉雅 音乐下载 演示代码
- 奔向光明阿波罗(4)
- psp的php文件怎么打开,【转贴】pspchina十三,教你用一个电池告别砖头[不用额外买电池]...
- PDF用什么打开?如何在PDF文档上输入文字?
热门文章
- ESP32网络音频播放器软硬件框图
- GitHub安装包下载(2020.4.26)
- 湖北性能优良戴尔服务器,超高密度的1U机架 戴尔R630服务器评测
- SAM9X60 curiosity开发板,SYSFS文件系统控制板载三色Led
- 学Java可以做什么?这九大领域任你选!
- 2-1 Python-求最大值及其索引
- Cloudera Manager搭建集群服务器启动失败
- [.NET/C#]快速采集全国城市商圈数据
- Java实现在windows系统下文字转语音并播报
- 多线程(Multi-Thread)