代码之家  ›  专栏  ›  技术社区  ›  xendi

Pip extras依赖项替换

  •  0
  • xendi  · 技术社区  · 4 年前

    我正在创建一个只有1个pypi依赖项的模块。这个依赖项在pypi上有2个包。一种是利用系统库,另一种是将该库的二进制分布打包。它们看起来像:

    theirmodule
    theirmodule-binary
    

    我的模块取决于 theirmodule 但是我希望我的模块的用户能够决定他们是想要依赖项的lib版本还是二进制版本。我看到 docs about Extras . 我可以做:

    setup(
        name="MyModule",
        ...
        extras_require={
            "BIN":  ["theirmodule-binary>=1.2"]
        }
    )
    

    但如果用户这么做 pip install mymodule[BIN] 他们的模块 theirmodule-binary . 这将是一个冲突,因为两者具有相同的基本导入字符串,例如:

    import theirmodule
    

    用于两者。如果不提供两个单独的pypi包,如何处理这一问题?

    0 回复  |  直到 4 年前
        1
  •  0
  •   sinoroc    4 年前

    可能是下面这样的:

    setup.py

    import setuptools
    setuptools.setup(
        name='My-Project',
        # ...
        extras_require={
            'Extra_Dependency_As_Binary': ['Dependency-Project-Binary>=1.2'],
            'Extra_Dependency_As_Library': ['Dependency-Project-Library<=3.4'],
        },
    )
    

    然后指导用户 我的项目 (也许在 自述文件 文件)来安装 明确地。例如 皮普

    • path/to/pythonX.Y -m pip install 'My-Project[Extra_Dependency_As_Binary]'
    • path/to/pythonX.Y -m pip install 'My-Project[Extra_Dependency_As_Library]'