You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法导入自定义Python包:ModuleNotFoundError问题求助

Python包上传PyPI后导入报错的解决方法

问题分析

你遇到的导入错误主要源于两个问题:

  1. init.py导入路径错误:本地直接运行__init__.py时,Python会将当前目录加入搜索路径,所以from starting_template import load_img能正常工作;但包安装后,模块属于opencv_auxiliary_for_vscode包的子模块,必须使用包内的相对/绝对导入路径才能被识别。
  2. setup.py可能未正确配置包内容:如果setup.py没有指定要打包的子模块,starting_template.py可能未被包含到发布的包中。

修正步骤

1. 修复__init__.py的导入语句

将__init__.py中的代码修改为相对导入(推荐,不受包名变更影响):

from .starting_template import load_img
print("loaded!")

或者使用绝对导入:

from opencv_auxiliary_for_vscode.starting_template import load_img
print("loaded!")

2. 确保setup.py正确配置包内容

检查你的setup.py,确保包含packages参数,使用find_packages()自动识别所有子包和模块:

from setuptools import setup, find_packages

setup(
    name="opencv_auxiliary_for_vscode",
    version="0.0.3",  # 必须更新版本号,PyPI不允许重复上传同一版本
    packages=find_packages(),
    # 其他可选配置:author、description、install_requires等
)

如果手动指定包,也可以写成packages=["opencv_auxiliary_for_vscode"],但find_packages()更灵活,适合后续扩展模块。

3. 重新构建并上传包

  • 先清理旧的构建文件:删除dist/、build/、opencv_auxiliary_for_vscode.egg-info/文件夹
  • 重新构建包:
    python setup.py sdist bdist_wheel
    
  • 用twine上传新版本:
    twine upload dist/*
    

4. 测试导入

安装更新后的包,执行以下导入语句即可正常使用:

# 方式1:通过__init__.py导出的接口导入
from opencv_auxiliary_for_vscode import load_img

# 方式2:直接从子模块导入
from opencv_auxiliary_for_vscode.starting_template import load_img

补充说明

本地测试包时,不要直接运行__init__.py脚本,应该在包含setup.py的基础文件夹下启动Python交互环境,再导入包,避免相对导入的脚本运行报错。

内容的提问来源于stack exchange,提问作者Tms91

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 06:34:56