Python包的多个安装配置

时间:2011-11-28 07:55:12

标签: python packaging pip distribute

我正在创建一个有点模块化的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 installpip install my_document_parser
    • 安装my_document_parsersome_required_packagemisaka
  • 裸装
    • 类似于python setup.py install --bare
    • 的内容
    • 安装my_document_parsersome_required_package
  • 启用其他依赖项的方法
    • 类似于python setup.py install --bare --with-textile
    • 的内容
    • 安装my_document_parsersome_required_packagetextile

这是我第一次从开发人员的角度讨论Python软件包,所以如果我以错误的方式处理事情,我会对任何人提供的任何内容持开放态度。

感谢。

1 个答案:

答案 0 :(得分:0)

默认安装会在install_requirespackages部分安装所有内容。您的setup.py脚本永远不会安装extras_require下的软件包;只有为这种安装创建一些逻辑。

默认情况下,setuptoolsdistutils无法明确说“使用我的设置调用的这些部分进行安装”。你需要自己实施。

pip始终使用 no parameter to setup.py 安装软件包,但 - 单版本外部托管,以告知setuptools永远不要创建.egg文件。


结论:如果您希望人们使用pip安装您的软件包,请忘记--bare--with-textile。您可以做的最好的是完整安装,包括misakatextile作为依赖项。

也许你应该阅读The Hitchhiker's Guide To Packaging,特别是Creating a Package部分和setuptool's specification - 这是一个非常好的部分,它涵盖了setuptools可以做的所有事情。