Python依赖管理和打包工具poetry
2019-06-20 18:08
951 查看
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 4000 /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 #运行脚本和代码
可能遇到的问题–not found file
需要注意的是 文件夹包名需要是与项目名对应,项目名用横杠,文件夹包名用下划线,两者要与toml文件中的项目名相对应。
比如
项目名为 test-project
则文件夹包名为 test_project
toml文件中的项目名也使用横杠的格式 test-project
相关文章推荐
- Composer : php依赖管理工具
- python包管理工具关系
- Mac下PHP依赖管理工具Composer下载与安装
- PHP依赖管理工具Composer入门
- Python的包管理工具
- Python的包管理工具
- Python的包管理工具easy_install, setuptools, pip,distribute介绍
- 进阶篇第二期:代码依赖管理工具之CocoaPods
- Python 包管理工具解惑
- Python的包管理工具
- Python 包管理工具解惑
- supervisor - Python进程管理工具
- python版本管理工具记录
- python文件打包格式,pip包管理
- Python——包管理工具Pip
- Python的包管理工具Pip
- CentOS 下使用安装 python 包管理工具 pip
- Composer PHP用来管理依赖关系的工具
- 包升级pip:强大的Python包管理工具
- 【python】包管理工具pip的国内源站点使用