我正在创建一个有点模块化的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
python setup.py install --bare
my_document_parser
,some_required_package
python setup.py install --bare --with-textile
my_document_parser
,some_required_package
,textile
这是我第一次从开发人员的角度讨论Python软件包,所以如果我以错误的方式处理事情,我会对任何人提供的任何内容持开放态度。
感谢。
答案 0 :(得分:0)
默认安装会在install_requires
和packages
部分安装所有内容。您的setup.py脚本永远不会安装extras_require
下的软件包;只有为这种安装创建一些逻辑。
默认情况下,setuptools
和distutils
无法明确说“使用我的设置调用的这些部分进行安装”。你需要自己实施。
pip
始终使用 no parameter to setup.py 安装软件包,但 - 单版本外部托管,以告知setuptools
永远不要创建.egg
文件。
结论:如果您希望人们使用pip安装您的软件包,请忘记--bare
和--with-textile
。您可以做的最好的是完整安装,包括misaka
和textile
作为依赖项。
也许你应该阅读The Hitchhiker's Guide To Packaging,特别是Creating a Package部分和setuptool's specification - 这是一个非常好的部分,它涵盖了setuptools可以做的所有事情。