我正在创建一个Python包,它在本质上有点模块化,我想知道处理多个安装配置的最佳方法是什么?
取以下setup.py
作为简单文档解析器的包:
setup(
name = 'my_document_parser',
...
entry_points = {
'my_document_parser.parsers': [
'markdown = my_document_parser.parsers.misaka:Parser [misaka]',
'textile = my_document_parser.parsers.textile:Parser [textile]'
]
},
install_requires = [
'some_required_package'
],
extras_require = {
'misaka' = ['misaka'],
'textile' = ['textile']
},
...
)
我想让下面的东西可用:
- 默认安装
-
python setup.py install
或pip install my_document_parser
- 安装
my_document_parser
,some_required_package
,misaka
裸安装 -
- 安装
my_document_parser
,some_required_package
- 一种启用其他依赖项的方法
- 例如
python setup.py install --bare --with-textile
- 安装
my_document_parser
,some_required_package
,textile
- 比如
python setup.py install --bare
这是我第一次从开发人员的角度摆弄Python包,所以如果我做错了什么,我愿意接受任何人提供的任何建议。
谢谢。
默认安装将安装install_requires
和packages
部分中的所有内容。extras_require
下的包永远不会被setup.py脚本安装;只有当你为这种安装创建了一些逻辑。
默认情况下,setuptools
和distutils
没有办法显式地说"使用我的setup调用的这些部分安装"。你需要自己实现。
pip
总是使用安装软件包,没有参数到setup.py,但——single-version- externallymanaged ,告诉setuptools
永远不要创建.egg
文件。
:如果你想让人们使用pip来安装你的包,忘记--bare
和--with-textile
。最好是完整安装,包括misaka
和textile
作为依赖项。
也许你应该读一下《打包指南》,特别是创建一个包部分和setuptool的规范——这是一个相当好的指南,它涵盖了setuptools可以做的所有事情。