Pyinstaller ModuleNotFoundError,仅在windows上缺少子模块

2024-04-25 14:38:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试打包一个python应用程序以供跨平台使用。它基本上是一个用于localhost的小型web服务器(flask)。你知道吗

到目前为止,我已经解决了一些小问题,能够为Linux(ubuntu)和OSX打包。然而,windows给我带来了一些麻烦。构建过程进行得很顺利,但在运行时,我得到ModuleNotFoundError,缺少的模块是我的应用程序(顶级包)的主名称。我在两个平台上使用基本相同的build命令,使用默认的“单文件夹”模式。你知道吗

一个非常明显的问题是,在Linux上的output文件夹中,我可以看到所有可用于所用模块的文件夹,例如,我在output文件夹中看到文件夹“cairo”和“psutil”以及大约20个其他文件夹。但是,在windows中,输出文件夹中没有文件夹。有一些库文件,如\u bz2.py和_哈希库.py,但似乎大部分内容都不见了。同样,Linux上的输出文件夹约为100MB,而windows上的输出文件夹约为10MB。显然,在windows上运行pyinstaller时,似乎找不到程序依赖性的很大一部分,但由于这一点非常明显,我怀疑这是否是一个bug,我觉得这可能是我遗漏的某个简单选项。你知道吗

(有趣的是,我可以将输出文件夹中的文件夹从Linux复制到windows,这会将错误更改为ImportError,cannot import name(未知位置)。很明显,windows将无法读取这些文件夹中的一些.so文件,所以我真的没想到它会工作)

我尝试过的事情:

  • 使用单文件(-F)模式
  • 使用--hidden import X表示缺少的模块

请让我知道,如果我应该分享一个链接到确切的pyinstaller命令和输出文件在每个操作系统。感谢您抽出时间阅读我的帖子。你知道吗


Tags: 模块文件pyimport命令文件夹web应用程序