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

Python含子包的Package打包为Zip后无法导入模块的问题求助

问题:Python无法识别Zip归档中的TestPackage模块

错误原因

你遇到的问题确实是打包时的文件结构层级错误:
你进入TestPackage/目录执行zip ../TestPackage.zip *,会把TestPackage目录下的所有内容(__init__.py、PackA/)直接放到Zip归档的根目录,而不是把TestPackage本身作为Zip的顶层目录。

当你把TestPackage.zip添加到sys.path后,Python会在Zip的根目录查找TestPackage模块,但此时Zip根目录只有PackA和__init__.py,没有名为TestPackage的顶层目录/模块,所以抛出ModuleNotFoundError。

解决步骤

1. 重新打包(核心修复)

不要进入TestPackage目录,在它的上级目录执行打包命令,将整个TestPackage目录归档:

zip TestPackage.zip TestPackage -r
  • -r参数用于递归打包子目录(比如PackA/)

2. 验证归档结构

执行以下命令查看Zip内的文件结构,确保顶层是TestPackage目录:

unzip -l TestPackage.zip

正确的输出应该类似:

Archive:  TestPackage.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  2024-XX-XX XX:XX   TestPackage/
       35  2024-XX-XX XX:XX   TestPackage/__init__.py
        0  2024-XX-XX XX:XX   TestPackage/PackA/
       68  2024-XX-XX XX:XX   TestPackage/PackA/PackA.py
       32  2024-XX-XX XX:XX   TestPackage/PackA/__init__.py
---------                     -------
      135                     5 files

3. 测试运行

此时你的main.py代码无需修改(只要sys.path指向正确的TestPackage.zip路径),运行后就能正常导入模块并执行hello_from_A()。

额外注意

  • 确保sys.path.append的是Zip文件的完整路径,而非包含Zip的目录
  • 如果需要跨平台分发,确保Zip归档保留了目录结构(上述命令已保证这一点)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 00:05:00