setup.py配置package_data无法正确包含.xlsx文件问题排查
可行解决步骤
按如下顺序操作即可解决该问题:
清空所有旧构建缓存
执行以下命令删除构建生成的缓存目录(Windows用户可手动删除对应文件夹):rm -rf build dist *.egg-info该步骤是最容易忽略的核心问题点:旧的构建缓存会保留历史配置的打包规则,即使你修改了setup.py或MANIFEST.in也不会生效,导致xlsx文件一直被排除。
调整setup.py为兼容性更高的写法
嵌套子包的资源匹配在部分版本的setuptools中存在规则识别问题,直接给子包单独指定资源文件即可:from setuptools import setup, find_packages setup( name='myproject', packages=find_packages(), package_data={ # 全局匹配所有txt、xlsx文件 "": ["*.txt", "*.xlsx"], # 单独指定Data子包的资源,兜底兼容 "myproject.Data": ["*.txt", "*.xlsx"] }, # 如果你使用MANIFEST.in管理资源,取消下面这行的注释 # include_package_data=True )(可选)如果保留MANIFEST.in,写入如下内容强制包含对应文件:
recursive-include myproject *.xlsx *.txt重新构建安装包
先卸载已安装的旧版本:pip uninstall -y myproject构建新的源码包:
python setup.py sdist安装新构建的包(也可使用
pip install . --no-cache-dir直接本地安装):pip install dist/myproject-*.tar.gz
操作完成后再检查site-packages下的myproject/Data目录,即可看到test.xlsx文件。
内容的提问来源于stack exchange,提问作者rsgny
相关产品推荐
相关产品推荐

