python工具库composer_大家都知道Python库很强大,却不知道还有强大工具包 poetry?-阿里云开发者社区...

前言

Python有很多很强大的库,因此而闻名天下,却不知道还有不少的工具包,今天为大家一款包管理和打包的工具poetry

在Python中,对于初学者来说,打包系统和依赖管理是非常复杂和难懂的。即使对于经验丰富的开发者,一个项目总是要同时创建多个文件: 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 "

]

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 文件

init 基于已有的项目代码创建 pyproject.toml 文件,支持交互式填写

install 安装依赖库

update 更新依赖库

add 添加依赖库

remove 移除依赖库

show 查看具体依赖库信息,支持显示树形依赖链

build 构建 tar.gz 或 wheel 包

publish 发布到 PyPI

run 运行脚本和代码

这个错误通常表示在调用`Composer`类的`__init__`方法时传递了多余的参数。在`docxcompose`中,`Composer`类的`__init__`方法只接受一个`Document`类型的参数,用于指定合并后的文档。因此,您需要确保在调用`Composer`类的`__init__`方法时只传递一个参数。 针对您的代码报错信息,最有可能的原因是在创建`Composer`对象时多传了一个参数,可以将代码修改为以下形式: ```python from openpyxl import load_workbook from docxcompose.composer import Composer from docx import Document # 加载Excel文件 wb = load_workbook(r'D:\好记薪\工商资料生成\表格.xlsx') sheet = wb['sheet2'] # 获取需要插入的Docx文件路径 docx_files = [] if sheet['D2'].value: docx_files.append(r'D:\好记薪\工商资料生成\A公司登记申请书.docx') if sheet['E2'].value: docx_files.append(r'D:\好记薪\工商资料生成\B股东会决议.docx') if sheet['F2'].value: docx_files.append(r'D:\好记薪\工商资料生成\C章程.docx') if sheet['G2'].value: docx_files.append(r'D:\好记薪\工商资料生成\D股权转让协议.docx') if sheet['H2'].value: docx_files.append(r'D:\好记薪\工商资料生成\E有关债务清偿及担保情况说明.docx') # 创建模板Docx template_docx = Document('template.docx') # 将需要插入的Docx文件逐个加到模板末尾 if docx_files: composer = Composer(template_docx) for docx_file in docx_files: composer.append(Document(docx_file)) composer.save('merged.docx') ``` 在以上代码中,去掉了原本在创建`Composer`对象时的第二个参数`Document()`,即只传递了模板docx文件的`Document`对象作为参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值