一个Python包的多个安装配置



我正在创建一个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_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包,所以如果我做错了什么,我愿意接受任何人提供的任何建议。

谢谢。

默认安装将安装install_requirespackages部分中的所有内容。extras_require下的包永远不会被setup.py脚本安装;只有当你为这种安装创建了一些逻辑。

默认情况下,setuptoolsdistutils没有办法显式地说"使用我的setup调用的这些部分安装"。你需要自己实现。

pip总是使用安装软件包,没有参数到setup.py,但——single-version- externallymanaged ,告诉setuptools永远不要创建.egg文件。


:如果你想让人们使用pip来安装你的包,忘记--bare--with-textile。最好是完整安装,包括misakatextile作为依赖项。

也许你应该读一下《打包指南》,特别是创建一个包部分和setuptool的规范——这是一个相当好的指南,它涵盖了setuptools可以做的所有事情。

相关内容

  • 没有找到相关文章

最新更新