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

自定义PyPI包上传后出现Module Not Found Error问题求助

解决PyPI自定义包的Module Not Found Error问题

排查与解决步骤

1. 先确认包名和模块名的冲突问题

你猜的没错,包名和内部.py文件名/顶级目录名重复,确实是这类导入错误的常见诱因。

  • 打开setup.py或pyproject.toml,查看里面的name字段(这是你上传到PyPI的包名),确保它和包内的顶级目录(比如modelpg)或.py文件名不重名。比如包内有modelpg目录的话,PyPI包名可以改成modelpg-core这类差异化名称。

2. 检查目录结构与__init__.py的导入路径

从你提供的截图来看,重点核对这几点:

  • modelpg目录下必须有__init__.py(空文件也行),而且文件里的导入要用相对路径。比如要导入子模块Transformer,应该写:
    from .Transformer import *
    
    别漏了前面的点号,不然Python会把它当成全局模块查找。
  • 再看Transformer目录下的__init__.py,里面的导入同样要用相对路径,避免直接写import xxx这种绝对导入。

3. 清理本地安装,重新测试

本地开发目录和已安装的包很容易冲突,先彻底清理:

  • 卸载已安装的包:pip uninstall -y 你的包名
  • 从PyPI重新安装:pip install 你的包名
  • 然后打开Python终端,用正确的路径导入,比如import modelpg或者from modelpg import Transformer,别搞混层级。

4. 核对打包配置文件

确保setup.py或pyproject.toml里正确包含了所有模块:

  • 如果用setup.py,直接用find_packages()自动找所有包,避免手动配置遗漏:
    from setuptools import setup, find_packages
    
    setup(
        name="你的包名",
        packages=find_packages(),
        # 补充版本、作者、依赖等其他配置
    )
    
  • 如果用pyproject.toml,要确保[tool.setuptools.packages]下配置了find = {},让工具自动发现所有包。

5. 本地预打包测试再上传

别直接上传PyPI,先本地打包验证没问题再操作:

  • 生成wheel包:python -m build
  • 创建一个虚拟环境,安装本地生成的wheel包:pip install dist/你的包名-*.whl
  • 在虚拟环境中测试模块导入,确认没有报错后,再用Twine上传到PyPI。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 07:55:27