如何从单个 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
在我的项目中,我有一个 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