带有 Pyside2 和 Matplotlib 的 Pyinstaller 无法正常工作

Posted

技术标签:

【中文标题】带有 Pyside2 和 Matplotlib 的 Pyinstaller 无法正常工作【英文标题】:Pyinstaller with Pyside2 and Matplotlib is not working 【发布时间】:2019-01-22 10:47:59 【问题描述】:

通过使用 Pyinstaller、Pyside2 和 Matplotlib(PyQtGraph),我没有得到任何可执行文件。

我尝试了不同的 Python 版本(3.5、3.6、3.7)最新发布和开发版本的 Pyinstaller、最新的 Pyside2 和最新的 Matplotlib 版本。我最近的“成功”是在 python 3.5、pyside2 (5.12.0) 上为 Matplotlib(3.0.2) 或 PyQtGraph(development 0.11) 创建一个 exe 文件(dir 或 onefile 不会改变结果),但是当我尝试启动时出现以下错误:

ImportError: 没有名为“numpy.core._dtype_ctypes”的模块 [11856] 无法执行脚本 Pyside2PyQTGraph

当我只做一个仅带有标签的 Pyside2 示例时,一切都按预期工作。我也试过 --hidden-imports numpy 但没有帮助。我当然可以分享源代码。此外,我更喜欢使用 Matplotlib,但 PyQtGraph 也很好。

我还有什么可以尝试的?我究竟做错了什么?顺便说一句,我使用的是 Windows 10。

from PySide2.QtWidgets import QWidget, QApplication,QVBoxLayout
import sys
from matplotlib.backends.backend_qt5agg import FigureCanvas as Canvas
from matplotlib.figure import Figure
from matplotlib import rcParams



class MatplotlibWidget(QWidget):
    def __init__(self):
        QWidget.__init__(self)
        self.canvas = Canvas(Figure())
        vertLayout = QVBoxLayout()
        vertLayout.addWidget(self.canvas)
        self.setLayout(vertLayout)
        self.axes = self.canvas.figure.add_subplot(111)



if __name__ == "__main__":
    qapp = QApplication(sys.argv)
    app = MatplotlibWidget()
    app.axes.plot(range(12), range(12))
    app.show()
    qapp.exec_()

【问题讨论】:

如果需要 PyQtGraphe 最小工作示例,我当然会分享。所有脚本在运行 python script.py 时运行良好。非常感谢您的帮助!!! 【参考方案1】:

当前的 numpy 版本 (1.16.0) 似乎存在问题。通过

降级 numpy

python -m pip install numpy==1.15.0

帮我解决了。

【讨论】:

非常感谢!这有帮助。在该解决方案之前花费了大量时间!谢谢!

以上是关于带有 Pyside2 和 Matplotlib 的 Pyinstaller 无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

由于 PySide2 和 Matplotlib,Travis-CI 无法构建

在 Pyside2 中嵌入 Matplotlib 的释放错误

如何使用 PySide2 在 matplotlib 中显示图形?

在使用 matplotlib 和 PySide2 运行的应用程序中使用 pdb 调试器时出现“事件循环已在运行”

带有命名参数的 PySide2 (5.14.2) 信号

带有 Pyinstaller 的 PySide2:无法执行脚本 pyi_rth_pkgres