从PyPI导入自定义Python包sumpackagesonar时出现ModuleNotFoundError
问题分析与解决方案
核心原因:包结构错误
你当前的目录结构把setup.py放在了包目录sumpackagesonar内部,这会导致setuptools的find_packages()无法正确识别要打包的模块,最终安装后的包实际上没有包含你的代码文件,所以导入时会报错。
正确的包结构调整
把setup.py移到包目录的外面,调整后的结构应该是:
sumpackagesonar_project/ sumpackagesonar/ __init__.py sum.py setup.py
修复后的setup.py(可选优化)
虽然find_packages()在正确结构下能自动识别包,但也可以显式指定包名避免歧义:
from setuptools import setup, find_packages setup( name='sumpackagesonar', version='1.0.0', packages=['sumpackagesonar'], # 显式指定包名 # 或者继续用find_packages(),此时它会找到sumpackagesonar目录 # packages=find_packages(), )
重新构建并上传
- 删除旧的
dist目录 - 重新生成分发文件:
python setup.py sdist bdist_wheel - 用twine重新上传到PyPI:
twine upload dist/*
安装后验证
安装完成后,先检查包的安装文件列表,确认代码是否被正确安装:
pip show -f sumpackagesonar
如果输出里能看到sumpackagesonar/__init__.py和sumpackagesonar/sum.py,说明安装正常。
环境一致性检查
确保你运行import时用的Python解释器,和安装包时用的pip属于同一个环境:
- 如果用
pip install,就用python运行脚本 - 如果用
pip3 install,就用python3运行脚本
可以用以下命令验证:
# 查看pip对应的Python路径 pip --version # 查看当前python的路径 which python # Linux/macOS where python # Windows
如果路径不一致,说明环境不匹配,需要用对应环境的pip重新安装。
内容的提问来源于stack exchange,提问作者Sonarjit
相关产品推荐
相关产品推荐

