poetryPython 依賴管理和打包工具
poetry 是一個包管理和打包的工具。
在 Python 中,對于初學者來說,打包系統(tǒng)和依賴管理是非常復雜和難懂的。即使對于經驗豐富的開發(fā)者,一個項目總是要同時創(chuàng)建多個文件: `setup.py` ,`requirements.txt`,`setup.cfg` , `MANIFEST.in` ,還有最新的 `Pipfile`。
基于此, poetry 將所有的配置都放置在一個 toml 文件中,這些配置包括:依賴管理、構建、打包、發(fā)布。
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 <[email protected]>" ] 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 提供了一系列覆蓋整個開發(fā)流程的命令,這些命令使用簡單:
| 名稱 | 功能 |
|---|---|
| new | 創(chuàng)建一個項目腳手架,包含基本結構、pyproject.toml 文件 |
| init | 基于已有的項目代碼創(chuàng)建 pyproject.toml 文件,支持交互式填寫 |
| install | 安裝依賴庫 |
| update | 更新依賴庫 |
| add | 添加依賴庫 |
| remove | 移除依賴庫 |
| show | 查看具體依賴庫信息,支持顯示樹形依賴鏈 |
| build | 構建 tar.gz 或 wheel 包 |
| publish | 發(fā)布到 PyPI |
| run | 運行腳本和代碼 |
評論
圖片
表情
