出于这个问题,我们假设在一个git存储库下,我正在开发2个独立的软件包。考虑以下结构:
my_repo/
package1/
...some modules
package2/
...some modules
setup.py
setup.py代码是:
from setuptools import setup
setup(
name='Cool_package',
version=1.0,
description='...',
author='Myself',
packages=['package1', 'package2'],
install_requires=[
...
]
)
我正在使用此命令以所需的方式安装软件包(避免python setup.py安装或开发):
pip install -e .
同时安装了package1和package2。
我的问题是,考虑到上述结构要求它们共享一个setup.py文件,有一种方法只能安装这两种方法中的一种(用户自行决定)。
同样,我知道这种结构并不理想(理想情况下,我会将包装分成2个单独的存储库)。
非常感谢!
答案 0 :(得分:0)
我建议您为每个软件包创建一个安装脚本。您可以通过通用的setup.py
脚本共享通用信息,如下所示:
repo/
├── bar
├── foo
├── setup_bar.py
├── setup_foo.py
└── setup.py
2 directories, 3 files
然后,公共setup.py
文件将包含以下代码。它也可以用于一次安装两个软件包:
from functools import partial
from setuptools import setup
setup = partial(
setup,
name='Cool_package',
version=1.0,
description='...',
author='Myself',
packages=['foo', 'bar']
)
if __name__ == '__main__':
setup()
单独的setup_*.py
脚本将重用该信息,并且仅安装一个软件包:
from setup import setup
setup(packages=['foo']) # For `setup_foo.py`.
setup(packages=['bar']) # For `setup_bar.py`.
通过这种方式,用户可以使用相应的安装脚本来选择要安装的软件包。