Python3.7运行Python3.6项目遇RuntimeError: empty_like已有文档字符串求解决
解决Python3.7下numpy
empty_like docstring重复的RuntimeError问题 这个错误我之前处理过,核心原因是你使用的numpy 1.16.0和Python3.7存在兼容性bug,结合你从Python3.6迁移到3.7运行的场景,给你以下具体解决步骤:
1. 优先升级numpy到兼容Python3.7的版本
numpy 1.16.x系列对Python3.7的支持不完善,尤其是在程序退出阶段(atexit钩子)的docstring装饰器处理逻辑,会触发"method already has a docstring"的运行时错误。你需要升级到numpy 1.17.0及以上版本——这个版本开始完全适配Python3.7:
pip install --upgrade numpy>=1.17.0
2. 同步升级scikit-learn保证依赖兼容
你当前使用的scikit-learn 0.20.2最高仅支持numpy 1.16.x,升级numpy后可能出现依赖不匹配问题,建议同步升级到支持numpy 1.17+的scikit-learn版本(比如0.21.0及以上):
pip install --upgrade scikit-learn>=0.21.0
3. 清理旧的egg缓存文件
错误信息显示包是从.eggs目录加载的,这大概率是之前旧版本依赖的缓存残留,会干扰新包的正常加载。先删除这个目录再重新安装依赖:
rm -rf /project/.eggs pip install -r requirements.txt
4. 验证Python环境一致性
确保你当前使用的Python和pip都是3.7版本,避免多版本环境的干扰:
# 检查Python版本 python --version # 检查pip对应的Python版本 pip --version
补充说明
Python3.7在模块导入和卸载的生命周期管理上做了调整,而旧版本numpy的装饰器逻辑没有适配这些变化,导致程序退出时触发重复添加docstring的错误。升级到兼容版本后,这个问题就会被修复。另外,建议你检查项目中其他依赖包对Python3.7的支持情况,避免出现类似兼容性问题。
内容的提问来源于stack exchange,提问作者amarchin
相关产品推荐
相关产品推荐

