【问题标题】:Can’t run zip file: “can't find '__main__' module”无法运行 zip 文件:“找不到 '__main__' 模块”
【发布时间】:2014-01-09 13:49:17
【问题描述】:

我在我的机器上将我的程序打包成一个 zip 文件,它包含 __main__.pyc,并且在我的机器和其他机器上都可以正常工作,但是当我将它复制到第三台机器时,它就不起作用了。它提供的唯一信息是

/usr/local/bin/python3: can't find '__main__' module in 'main.zip'

这对我没有帮助。我猜可能是因为这台机器是运行在云端的虚拟机吧?

我机器上的python3是:

Python 3.3.1 (default, Apr 24 2013, 20:58:52)
[GCC 4.6.3] on linux

3号机是:

Python 3.3.1 (default, Jan  8 2014, 18:36:12)
[GCC 4.6.3] on linux

我机器上的linux版本是

Linux Svr2 3.2.0-34-generic-pae #53-Ubuntu SMP Thu Nov 15 11:11:12 UTC 2012 i686 i686 i386 GNU/Linux

3号机是:

Linux ubuntu 3.2.0-23-generic #36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

我的机器操作系统是32位,目标机器是64位,这有什么区别吗?

【问题讨论】:

  • 是的……当然。我将“通用”与“通用-pae”分开,但 32 位和 64 位 python 是不同的。请注意,您应该能够在 64 位操作系统上运行 32 位 python,因此如果您包含 python 本身,您可以通过这种方式使其可移植。或查看冻结,我不知道 linux 支持什么,但像 PyInstaller 或 cx_freeze 之类的......

标签: python python-3.x


【解决方案1】:

它包含__main__.pyc

我的机器操作系统是32bit,目标机器是64bit

是的,这很可能是导致问题的原因。 pyc 文件是源代码的编译 版本(存储在.py 文件中)。这些编译的文件是非常特定于版本的,很可能编译为 32 位的 pyc 无法在 64 位 Python 上运行,尽管版本相同。

您应该只将py 文件存储在压缩包中,而不是使用pyc 文件。这样,执行中的 Python 解释器就可以根据需要解释代码。

【讨论】:

  • 我认为如果.pyc在第三台机器上被上述用户删除,它应该可以工作。还是不会?。
  • @Drt 如果包含.py 文件,则可以。
  • 我打包了 py 文件而不是 pyo ,它仍然无法工作并给我相同的信息,我直接上传 py 文件并运行它,它给了我 'ImportError: No module named 'zlib ''这不是打扰的真正原因吗?
  • @user2003548 那台机器上可能没有使用 zlib 库编译 Python。
【解决方案2】:

python main 而不是 python main.zip 一样运行它。

【讨论】:

    【解决方案3】:

    问题解决了。

    zip文件无法执行,因为目标机器上的python3没有安装好,并且错过了zlib和_ssl等很多库。

    重新安装python3后,程序可以运行了。操作系统位不同或使用pyc都没关系。

    【讨论】:

      猜你喜欢
      • 2020-09-07
      • 2019-08-27
      • 2020-05-10
      • 2016-10-31
      • 2014-02-19
      • 1970-01-01
      • 2021-07-01
      • 1970-01-01
      相关资源
      最近更新 更多