我尝试使用PyInstaller在Windows 7下编译Python项目。该项目运行正常,没有问题,但是当我尝试对其进行编译时,结果将不起作用。尽管在编译过程中没有收到警告warnmain.txt,但build目录中的文件中有很多警告:warnmain.txt
warnmain.txt
build
我不是很了解这些警告,例如“没有名为numpy.pi的模块”,因为numpy.pi它不是模块而是数字。我从未尝试导入numpy.pi。我确实导入numpy并matplotlib明确。另外,我正在使用PyQt4。我认为错误可能与那些库有关。
numpy.pi
numpy
matplotlib
但是我能够编译一个成功使用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我的小型示例脚本也看不到任何钩子,但是此脚本有效。我在文件中使用了以下导入(不是全部都在同一文件中,而是在不同文件中):
hook- matplotlib
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没有给出任何错误/警告,因此我无法弄清楚问题是否与库有关,或者是否还有其他需要考虑的地方。
问题是matplotlib的某些运行时依赖性。因此,运行该程序时编译正常,但引发了一些错误。因为终端立即关闭了,所以我没有意识到。重定向后stdout,并stderr到一个文件,我可以看到,我错过了图书馆Tkinter和FileDialog。import在main的顶部添加两个s解决了此问题。
stdout
stderr
Tkinter
FileDialog
import