执行conda-build提示未找到任何文件,包安装后报ModuleNotFound错误
问题原因分析
1. conda build提示输出文件数为0的原因
meta.yaml的source.path配置错误:你配置的路径是../plusone,指向的是存放代码的子目录,但你的setup.py存放在项目根目录,构建时进入源码目录后找不到setup.py,安装步骤未实际执行。- Windows构建脚本
bld.bat使用了本地绝对路径的Python解释器:conda build会创建独立的隔离构建环境,使用本地绝对路径会导致安装操作没有写入conda的构建目标前缀(%PREFIX%),构建工具扫描前缀目录时找不到任何新增文件,因此判定输出文件数为0。 - 构建脚本缺少必要的setuptools参数:未加
--single-version-externally-managed参数时,setuptools会默认以egg形式安装,conda无法识别这类安装路径的文件,也会导致文件抓取失败。
2. 模块无法使用报ModuleNotFoundError的原因
你构建上传的conda包是空包,没有包含任何实际的Python代码文件。conda install只是完成了空包的注册,所以conda list能查到包记录,但实际Python扫描路径下没有对应的plusone包目录,导入时自然会提示找不到模块。
修复方案
- 修改
meta.yaml的source配置,直接指向项目根目录,确保构建时能找到setup.py:
source: path: ../
- 修改
bld.bat内容,替换为conda标准写法:
%PYTHON% setup.py install --single-version-externally-managed --record=record.txt if errorlevel 1 exit 1
- 修改
build.sh内容,补充必要参数:
$PYTHON setup.py install --single-version-externally-managed --record=record.txt
- 检查
plusone目录下的初始化文件,把文件名从__init__py修正为__init__.py,缺失点会导致Python无法识别该目录为可导入的包。
修复后重新执行conda build conda-recipe,构建日志中不再出现文件数为0的警告后再上传即可。
内容的提问来源于stack exchange,提问作者Christian
相关产品推荐
相关产品推荐

