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

Python Packages - ImportError问题:Riot API封装包模块组织及测试套件构建受阻

排查Python打包时ImportError的实用思路

嘿,我之前打包Python模块的时候也踩过ImportError的坑,太懂这种明明本地跑的好好的,一打包就崩的郁闷了!结合你做Riot API封装器的场景,给你列几个最可能的排查方向:

  • 模块结构与导入方式问题
    本地运行时的路径和打包后的包路径差异是最常见的诱因:

    • 检查内部导入语句:如果封装器里用了from .utils import xxx这类相对导入,要确保包结构规范——根目录建议保留__init__.py(Python 3.3+虽支持无init的命名空间包,但打包工具对传统包的兼容性更好)。
    • 核对打包配置:如果你用setuptools,要确认setup.py里的packages=find_packages()能正确识别所有子模块;用poetry的话,pyproject.toml的packages字段要覆盖你的封装器目录。
  • 依赖包未正确声明
    Riot API封装肯定依赖了requests这类第三方库,如果打包时没把依赖同步进去,安装后运行就会触发ImportError:

    • 把所有依赖写入requirements.txt,或者在pyproject.toml的dependencies字段里明确声明(比如requests>=2.28.0)。
    • 打包前可以先在干净的虚拟环境里测试安装,验证依赖是否自动安装齐全。
  • 测试套件的路径适配问题
    你提到准备做测试套件,测试文件的位置和导入方式也可能影响:

    • 如果测试文件在项目根目录,而封装器在子目录(比如lol_wrapper/),测试时不要直接写import lol_wrapper,除非你已经把项目根目录加到Python路径里。可以在测试文件开头临时添加路径:
      import sys
      from pathlib import Path
      sys.path.append(str(Path(__file__).parent.parent))
      
    • 更推荐用pytest这类测试框架,配合规范的包结构,打包后测试用例也能正常执行。
  • 避免命名冲突
    检查你的模块/文件名有没有和Python内置模块、第三方库重名——比如如果你的文件叫requests.py,导入时会优先加载你自己的文件,而非第三方的requests库,直接导致依赖导入失败。

如果能提供具体的错误回溯信息(比如哪一行报错、尝试导入的模块名),能更快定位到问题根源,不过先试试上面的步骤应该能解决大部分打包时的ImportError~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:59:51