Я пытаюсь скомпилировать проект Python под Windows 7 с помощью PyInstaller. Проект работает нормально, проблем нет, однако, когда я пытаюсь скомпилировать его, результат не работает. Хотя во время компиляции я не вижу предупреждений, в файле warnmain.txt
в каталоге build
есть много: warnmain.txt
Я действительно не понимаю эти предупреждения, например no module named numpy.pi
, так как numpy.pi
не является модулем, а числом. Я никогда не пытался импортировать numpy.pi
. Я явно импортировал numpy
и matplotlib
. Кроме того, я использую PyQt4. Я думал, что ошибка может быть связана с этими библиотеками.
Однако мне удалось скомпилировать простой script, который успешно использует 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, но крючки, где вниз, используя каталог по умолчанию, насколько я мог читать из вывода компиляции, например. hook-matplotlib
выполнено. Я не видел никакого крючка для numpy
и не мог ли я для моего небольшого примера script, но это сработало. Я использовал следующие импорты в своих файлах (не все в одном, но в разных):
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 не дает никаких ошибок/предупреждений, я не мог понять, связана ли проблема с библиотеками или есть что-то еще, что нужно учитывать.
Update
После предложения JoranBeasley я скомпилировал программу без -w
и перенаправил stdout и stderr в файл. При выполнении программы я получил следующий ImportError
s:
no module named Tkinter # seemed to be required by matplotlib
и после добавления import Tkinter
в начале моего основного файла я получил
no module named FileDialog # seemed to be required also by matplotlib
и после того, как я наконец добавил import FileDialog
, программа действительно работает!