pyinstaller .exe 文件在导入另一个模块后不起作用

Posted

技术标签:

【中文标题】pyinstaller .exe 文件在导入另一个模块后不起作用【英文标题】:pyinstaller .exe file does not work after import another module 【发布时间】:2020-08-02 13:02:13 【问题描述】:

我使用 pyinstaller 从 python 文件创建了一个 exe 文件,如下所示,该文件正常工作。但是当我导入像 vtk 这样的模块或其他东西时,生成的 exe 文件不起作用。我该如何解决这个问题?

import sys
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtWidgets import QMainWindow
from simulation import SimulationWindow

class mainwindow(QMainWindow, SimulationWindow):
    def __init__(self, parent=None):
        super(mainwindow, self).__init__(parent)
        self.setupUi(self)
        self.show()
       
if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    demowindow = mainwindow()   
    demowindow.show()
    sys.exit(app.exec_())

【问题讨论】:

【参考方案1】:

使用钩子有一个复杂的方法,不幸的是,pyinstaller 不会捕获所有模块。所以你需要为此使用钩子。

简单的方法是从站点包复制模块文件夹并粘贴在您的可执行文件旁边,问题解决了

【讨论】:

以上是关于pyinstaller .exe 文件在导入另一个模块后不起作用的主要内容,如果未能解决你的问题,请参考以下文章

使用带有 mayavi 导入的 pyinstaller 创建独立的 exe

ImportError: 当使用pyinstaller创建一个.exe时,无法导入名称'pywrap_tensorflow'。

Python打包EXE神器 pyinstaller

您如何解决“未找到隐藏的导入!” pyinstaller 中针对 scipy 的警告?

pyinstaller:确定 Windows 服务中 socket.io 和 aiohttp 的隐藏导入

Pyinstaller exe 转换 matplotlib __init__ 错误