如何从单个 setup.py 构建多个 wheel 文件?

How do I build multiple wheel files from a single setup.py?

在我的项目中,我有一个 setup.py 文件,它使用以下命名空间模式构建多个模块:

from setuptools import setup

setup(name="testmoduleserver",
      packages=["testmodule.server","testmodule.shared"],
      namespace_packages=["testmodule"])

setup(name="testmoduleclient",
      packages=["testmodule.client","testmodule.shared"],
      namespace_packages=["testmodule"])

我正在尝试为这两个包构建 wheel 文件。但是,当我这样做时:

python -m pip wheel .

它只会为其中一种定义构建包。

为什么只构建了一个包?

您不能在您的 setup.py 中多次调用 setuptools.setup(),即使您想从一个代码库中创建多个包也是如此。

相反,您需要将所有内容分离到 separate namespace packages 中,并且每个都有一个 setup.py(它们都可以驻留在一个 Git 存储库中!):

testmodule/
    testmodule-client/
        setup.py
        testmodule/
            client/
                __init__.py
    testmodule-server/
        setup.py
        testmodule/
            server/
                __init__.py
    testmodule-shared/
        setup.py
        testmodule/
            shared/
                __init__.py

每个 setup.py 都包含一些内容

from setuptools import setup

setup(
    name='testmodule-client',
    packages=['testmodule.client'],
    install_requires=['testmodule-shared'],
    ...
)

from setuptools import setup

setup(
    name='testmodule-server',
    packages=['testmodule.server'],
    install_requires=['testmodule-shared'],
    ...
)

from setuptools import setup

setup(
    name='testmodule-shared',
    packages=['testmodule.shared'],
    ...
)

要组装所有三个轮子,然后 运行

pip wheel testmodule-client
pip wheel testmodule-server
pip wheel testmodule-shared