Python项目打包上传TestPyPI后安装成功但导入报错ModuleNotFoundError如何解决
问题原因
你打包生成的安装包仅包含了包元数据,没有将实际的Python代码文件打包进去,本质是打包配置文件的包包含规则配置错误,和你安装、上传的操作无关。
常见错误点及修复方案
首先确认项目目录结构合规
你存放setup.cfg的目录下,要么直接有oomstore代码文件夹(内部包含__init__.py和你的业务代码),要么明确指定代码存放的父目录。如果你是把代码放在sdk/python子目录下,没有额外配置的话,打包工具默认不会去子目录查找代码。修正setup.cfg的包查找配置
在setup.cfg中添加如下配置段,指定自动查找需要打包的包:[options] packages = find: [options.packages.find] # 如果代码存放在当前目录下,就写where = . # 如果代码存放在sdk/python目录下,就写如下配置 where = sdk/python如果你不想用自动查找,也可以手动列全所有需要打包的包:
[options] packages = oomstore oomstore.utils # 其他子包依次列出打包前本地验证,避免无效上传
每次修改配置后,先执行python -m build命令生成本地安装包,再执行unzip -l dist/oomstore-xxx-py3-none-any.whl查看包内文件列表,确认列表中存在oomstore/__init__.py等你的业务代码文件后,再上传到PyPI/TestPyPI。补充检查点
确认你的代码目录下所有需要打包的子文件夹都存在__init__.py文件(Python 3.3+虽然支持命名空间包不需要该文件,但传统打包工具的自动查找逻辑默认还是依赖该文件识别包目录)。
内容的提问来源于stack exchange,提问作者xm lian
相关产品推荐
相关产品推荐

