python - 决定在 setup.py 文件中安装哪个包
问题描述
为了这个问题,让我们假设在一个 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 个单独的存储库)。
提前谢谢了!
解决方案
我建议您为每个包创建一个安装脚本。您可以通过通用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`.
这样,用户可以使用相应的安装脚本来选择要安装的软件包。
推荐阅读
- python - 在多个条件下分配对象侧标签
- php - PHP 从 MySQL 表中为每个不同的用户获取 MAX 值
- python - Python中关于动画的简单问题
- intellij-idea - 在 IdeaVim 中移动拆分窗口
- javascript - data-live-search="true" 不适用于多个条目,但适用于第一个条目
- sql - 如何计算sql中where语句中的行数?
- javascript - 使用大尺寸数组创建元素,然后使用 javascript 将其插入 div
- java - 更改JDK版本后将无法安装该应用程序,请安装最新版本的Android Studio
- python - 我应该如何使用 control + delete 或 control + backspace 删除直到下划线
- laravel - laravel mysql - 数据提取问题