小编典典

使用PyInstaller时未命名模块

python

我尝试使用PyInstaller在Windows
7下编译Python项目。该项目运行正常,没有问题,但是当我尝试对其进行编译时,结果将不起作用。尽管在编译过程中没有收到警告warnmain.txt,但build目录中的文件中有很多警告:warnmain.txt

我不是很了解这些警告,例如“没有名为numpy.pi的模块”,因为numpy.pi它不是模块而是数字。我从未尝试导入numpy.pi。我确实导入numpymatplotlib明确。另外,我正在使用PyQt4。我认为错误可能与那些库有关。

但是我能够编译一个成功使用numpy的简单脚本:

import sys
from PyQt4 import QtGui, QtCore
import numpy as np

class MainWindow(QtGui.QMainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self)

        self.pb = QtGui.QPushButton(str(np.pi), self)

app = QtGui.QApplication(sys.argv)
main = MainWindow()
main.show()
sys.exit(app.exec_())

成功地表示已创建的可执行文件实际上显示了所需的输出。但是,还会warnmain.txt创建一个文件,其中包含与以前完全相同的“警告”。因此,我猜测编译我的实际项目并没有取得任何成功的事实与(或至少不仅如此)与这些警告无关。但是那又是什么错误呢?编译期间的唯一输出是“
INFO”,并且都不是否定语句。

我没有指定其他钩子目录,但是从我可以从编译输出中读取的钩子向下使用默认目录,例如hook- matplotlib已执行。我看不到任何钩子,numpy我的小型示例脚本也看不到任何钩子,但是此脚本有效。我在文件中使用了以下导入(不是全部都在同一文件中,而是在不同文件中):

import numpy as np
import matplotlib.pyplot as ppl
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt4agg import NavigationToolbar2QTAgg as NavigationToolbar
from PyQt4 import QtGui, QtCore
import json
import sys
import numpy # added this one later
import matplotlib # added this one later

由于PyInstaller没有给出任何错误/警告,因此我无法弄清楚问题是否与库有关,或者是否还有其他需要考虑的地方。


阅读 238

收藏
2020-12-20

共1个答案

小编典典

问题是matplotlib的某些运行时依赖性。因此,运行该程序时编译正常,但引发了一些错误。因为终端立即关闭了,所以我没有意识到。重定向后stdout,并stderr到一个文件,我可以看到,我错过了图书馆TkinterFileDialogimport在main的顶部添加两个s解决了此问题。

2020-12-20