通过pyinstaller使用PyQt4编译matplotlib时出现奇怪错误

通过pyinstaller使用PyQt4编译matplotlib时出现奇怪错误,matplotlib,pyqt4,pyinstaller,Matplotlib,Pyqt4,Pyinstaller,我试图编译PyQt4和Matplotlib的头疼事似乎无穷无尽 这是我的测试程序test.py from PyQt4 import QtGui, QtCore import math import sys from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas from matplotlib.backends.backend_qt4agg import NavigationToolbar2

我试图编译PyQt4和Matplotlib的头疼事似乎无穷无尽

这是我的测试程序
test.py

from PyQt4 import QtGui, QtCore
import math
import sys

from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt4agg import NavigationToolbar2QTAgg as NavigationToolbar
import matplotlib.pyplot as plt
下面是我通过命令行冻结此文件的尝试
pyinstaller-w--onefile test.py

(无选项测试-
pyinstaller test.py
-结果相同)

这是我的控制台输出:

16 INFO: wrote C:\Users\Tyson\Desktop\PHS3031 Lab1.2 - Alpha\test.spec
30 INFO: Testing for ability to set icons, version resources...
46 INFO: ... resource update available
62 INFO: UPX is not available.
78 INFO: Processing hook hook-os
171 INFO: Processing hook hook-time
171 INFO: Processing hook hook-cPickle
233 INFO: Processing hook hook-_sre
328 INFO: Processing hook hook-cStringIO
405 INFO: Processing hook hook-encodings
421 INFO: Processing hook hook-codecs
717 INFO: Extending PYTHONPATH with C:\Users\Tyson\Desktop\PHS3031 Lab1.2 - Alph
a
717 INFO: checking Analysis
796 INFO: checking PYZ
826 INFO: checking PKG
826 INFO: rebuilding out00-PKG.toc because out00-PKG.pkg is missing
826 INFO: building PKG (CArchive) out00-PKG.pkg
Traceback (most recent call last):
  File "C:\Python27\Scripts\pyinstaller-script.py", line 9, in <module>
    load_entry_point('PyInstaller==2.1', 'console_scripts', 'pyinstaller')()
  File "C:\Python27\lib\site-packages\PyInstaller\main.py", line 88, in run
    run_build(opts, spec_file, pyi_config)
  File "C:\Python27\lib\site-packages\PyInstaller\main.py", line 46, in run_buil
d
    PyInstaller.build.main(pyi_config, spec_file, **opts.__dict__)
  File "C:\Python27\lib\site-packages\PyInstaller\build.py", line 1924, in main
    build(specfile, kw.get('distpath'), kw.get('workpath'), kw.get('clean_build'
))
  File "C:\Python27\lib\site-packages\PyInstaller\build.py", line 1873, in build

    execfile(spec)
  File "C:\Users\Tyson\Desktop\PHS3031 Lab1.2 - Alpha\test.spec", line 17, in <m
odule>
    console=False )
  File "C:\Python27\lib\site-packages\PyInstaller\build.py", line 1170, in __ini
t__
    strip_binaries=self.strip, upx_binaries=self.upx,
  File "C:\Python27\lib\site-packages\PyInstaller\build.py", line 1008, in __ini
t__
    self.__postinit__()
  File "C:\Python27\lib\site-packages\PyInstaller\build.py", line 309, in __post
init__
    self.assemble()
  File "C:\Python27\lib\site-packages\PyInstaller\build.py", line 1050, in assem
ble
    dist_nm=inm)
  File "C:\Python27\lib\site-packages\PyInstaller\build.py", line 842, in checkC
ache
    digest = cacheDigest(fnm)
  File "C:\Python27\lib\site-packages\PyInstaller\build.py", line 796, in cacheD
igest
    data = open(fnm, "rb").read()
IOError: [Errno 22] invalid mode ('rb') or filename: ''
16信息:编写了C:\Users\Tyson\Desktop\phs3031lab1.2-Alpha\test.spec
30信息:测试设置图标、版本资源的能力。。。
46信息:。。。资源更新可用
62信息:UPX不可用。
78信息:处理钩子操作系统
171信息:处理钩子时间
171信息:处理挂钩cPickle
233信息:处理挂钩-\u sre
328信息:处理钩子cStringIO
405信息:处理钩子编码
421信息:处理钩子编解码器
717信息:使用C:\Users\Tyson\Desktop\PHS3031 Lab1.2-Alph扩展PYTHONPATH
A.
717信息:检查分析
796信息:正在检查PYZ
826信息:检查包装
826信息:由于缺少out00-PKG.PKG,正在重建out00-PKG.toc
826信息:建筑包装(CArchive)out00-PKG.PKG
回溯(最近一次呼叫最后一次):
文件“C:\Python27\Scripts\pyinstaller script.py”,第9行,在
加载入口点('PyInstaller==2.1','console\u scripts','PyInstaller')()
文件“C:\Python27\lib\site packages\PyInstaller\main.py”,第88行,正在运行
运行构建(选项、规范文件、pyi配置)
文件“C:\Python27\lib\site packages\PyInstaller\main.py”,第46行,在run\u buil中
D
PyInstaller.build.main(pyi\u配置、规范文件、**选项.\uuuuuuuuu命令)
文件“C:\Python27\lib\site packages\PyInstaller\build.py”,第1924行,在main中
构建(specfile,kw.get('distpath')、kw.get('workpath')、kw.get('clean_build'
))
文件“C:\Python27\lib\site packages\PyInstaller\build.py”,第1873行,内部版本
执行文件(规范)
文件“C:\Users\Tyson\Desktop\PHS3031 Lab1.2-Alpha\test.spec”,第17行,在
控制台=假)
文件“C:\Python27\lib\site packages\PyInstaller\build.py”,第1170行,在\uuu ini中
t__
strip_binaries=self.strip,upx_binaries=self.upx,
文件“C:\Python27\lib\site packages\PyInstaller\build.py”,第1008行,在\uuu ini中
t__
self.\uuuu postinit\uuuuu()
文件“C:\Python27\lib\site packages\PyInstaller\build.py”,第309行,在\uuu post中
初始化__
self.assembly()
文件“C:\Python27\lib\site packages\PyInstaller\build.py”,第1050行,在ASEM中
ble
距离(纳米=英寸)
文件“C:\Python27\lib\site packages\PyInstaller\build.py”,第842行,在checkC中
疼痛
摘要=缓存摘要(fnm)
文件“C:\Python27\lib\site packages\PyInstaller\build.py”,第796行,缓存
伊吉斯特
数据=打开(fnm,“rb”).read()
IOError:[Errno 22]无效的模式('rb')或文件名:“”
我正试图用Python2.7在Windows7上实现这一点

似乎有一些空字符串应该是文件名,但这个错误显然存在于我的代码之外

感谢所有帮助。
谢谢,

Tyson

PyInstaller似乎在缓存方面有问题,因为它每次都不读取所有源文件


%Appdata%文件夹中有一个pyinstaller文件夹,它将缓存存储在bincache*文件夹中。清理缓存并再次尝试运行pyinstaller可能会有所帮助

您是否尝试更新pywin32,看起来egg版本可能会导致问题(2种情况)我最初使用pip更新pywin32,但机器上没有luckno问题,请参阅完整输出您找到解决方案了吗?我遇到了类似的问题。看,我的帖子没有任何效果