我尝试使用PyInstaller在Windows 7下编译Python项目.该项目工作正常,没有问题,但是当我尝试编译它时,结果不起作用.虽然在编译期间我没有收到任何警告warnmain.txt,但build目录中的文件中有许多警告:warnmain.txt
我真的不明白那些警告,例如"没有名为numpy.pi的模块",因为numpy.pi它不是模块而是数字.我从未尝试过导入numpy.pi.我做进口numpy和matplotlib明确.另外我正在使用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_())
Run Code Online (Sandbox Code Playgroud)
这里成功意味着创建的可执行文件实际上显示了所需的输出.但是,还会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 …Run Code Online (Sandbox Code Playgroud) 我试图通过PyInstaller构建一个python脚本.我使用以下命令来配置,生成spec文件和构建:
wget pyinstaller.zip, extracted it, python Configure.py, etc, then:
python pyinstaller/Makespec.py --onefile myscript.py
python pyinstaller/Build.py myscript.spec
Run Code Online (Sandbox Code Playgroud)
这是它生成的spec文件:
# -*- mode: python -*-
a = Analysis([os.path.join(HOMEPATH,'support/_mountzlib.py'), os.path.join(HOMEPATH,'support/useUnicode.py'), 'icinga.py'],
pathex=['/home/user/projects/icinga_python/releases/v2.1'])
pyz = PYZ(a.pure)
exe = EXE( pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
name=os.path.join('dist', 'myscript'),
debug=False,
strip=False,
upx=True,
console=1 )
Run Code Online (Sandbox Code Playgroud)
这在dist/目录中构建了一个可执行文件.尝试运行此文件时,我得到以下内容:
Traceback (most recent call last):
File "<string>", line 12, in <module>
File "/home/user/projects/myscript/releases/v2.1/pyinstaller/iu.py", line 455, in importHook
raise ImportError, "No module named %s" % fqname
ImportError: No module named …Run Code Online (Sandbox Code Playgroud)