如何修改Python的setup.py,将inputs、logger打包到app目录中?
解决方案
要实现将inputs和logger目录打包后作为app的子目录,你需要调整setup.py中的包映射配置,具体步骤如下:
1. 确保inputs和logger是合法的Python包
在项目根目录的inputs和logger文件夹中添加空的__init__.py文件,这样setuptools才会将它们识别为可打包的Python包。
2. 修改setup.py配置
调整package_dir参数,将外部的inputs和logger目录映射为app的子包,同时更新packages列表包含这些映射后的子包:
from setuptools import setup import os setup( name='app', version=os.environ['BUILD_NUMBER'], description='sol', author='codebot', # 配置包路径映射:将项目根目录的inputs/logger映射为app的子包 package_dir={ 'app.inputs': 'inputs', 'app.logger': 'logger' }, # 指定要打包的包,包含app本身及其子包,以及映射后的app.inputs和app.logger packages=[ 'app', 'app.loaders', 'app.data', 'app.config', 'app.inputs', 'app.logger' ], entry_points={ 'group_1': 'run=app.__main__:main' } )
原理说明
- 原配置中
packages=['inputs', 'logger']会将这两个目录作为顶级包安装到site-packages根目录,而非app的子目录,所以你看不到它们在app文件夹下。 - 通过
package_dir映射,我们告诉setuptools:当寻找app.inputs这个子包时,去项目根目录的inputs文件夹读取内容;同理处理app.logger。这样打包安装后,inputs和logger就会作为app的子目录存在。
内容的提问来源于stack exchange,提问作者codebot
相关产品推荐
相关产品推荐

