我终于得到了PyInstaller来构建一个exe文件,但它没有运行。一旦我打开它,我就会在对话框中得到它:
Runtime Error!
Program C:\.....\MCManager.exe
R6034
An application has made an attempt to load the C runtime library incorrectly.
Please contact the application's support team for more information.
这是我的规格:
# -*- mode: python -*-
a = Analysis(['MCManager.py'],
pathex=['C:\\Users\\Lucas\\Dropbox'],
hiddenimports=[],
hookspath=None)
pyz = PYZ(a.pure)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
name=os.path.join('dist', 'MCManager.exe'),
debug=False,
strip=None,
upx=True,
console=False,
icon='MCManager.ico')
app = BUNDLE(exe,
name=os.path.join('dist', 'MCManager.exe.app'))
我环顾四周,似乎没有人遇到同样的问题。
如果它改变了什么,这个脚本使用wxPython。
答案 0 :(得分:10)
我打算发表评论,但代表不够。虽然这是前一段时间被问到的,但我最近遇到了同样的问题,结果证明它是版本3.2的Pyinstaller错误。
升级到pyinstaller 3.2后,结果exe终止于R6034: https://github.com/pyinstaller/pyinstaller/issues/1985
PyInstaller 3.2,OneFile R6034,32位Python 2.7.11 https://github.com/pyinstaller/pyinstaller/issues/2042
看起来他们已经在最新的开发版中解决了这个问题,建议
pip install https://github.com/pyinstaller/pyinstaller/archive/develop.zip
在我的需求文件中使用它而不是pyinstaller == 3.2为我修补它!
答案 1 :(得分:4)
我最近开始收到“运行时错误?(R6034)” 它是在一个可靠的现有python程序上,我之前使用pyinstaller编译为onefile。我注意到问题只发生在我编译后重命名了exe之后。一旦我将其重命名为原始的exe名称,R6034就会消失。
Leason学会了......在使用pyinstaller构建之后不要重命名你的exe。如果您需要您的exe具有不同的名称,请更改源py名称,然后重新编译。
答案 2 :(得分:1)
这似乎是类似的问题https://github.com/pyinstaller/pyinstaller/issues/689
看看你是否可以使用该解决方法:
我能够通过使用构建可执行文件来解决问题 onedir选项而不是onefile,然后只移动清单 到包含允许的单文件可执行文件的目录 它起作用。
似乎他们正在修复它
答案 3 :(得分:0)
我有同样的问题,没有重命名任何东西,我只是构建-F并崩溃版本3.2但是这个错误不会出现在版本2.1中。
链接: https://github.com/pyinstaller/pyinstaller/releases/download/v2.1/PyInstaller-2.1.zip
我的建议? pip uninstall pyinstaller 之后你应该安装2.1版本,然后你就可以再次运行了。 ./setup.py构建 ./setup.py安装
祝你好运答案 4 :(得分:0)
如果您在pyinstaller内置exe中调用popen,也会发生此错误。要解决此错误,您必须为popen调用的stdout使用显式文件句柄,如以下示例所示。
import sys
import subprocess
from PyQt4 import QtGui
def verify_license():
tmp_file = '.license_output'
try:
with open(tmp_file, 'w+') as file_obj:
proc = subprocess.Popen(['echo', 'hi'], shell=True,
stdout=file_obj, stderr=subprocess.STDOUT,
stdin=subprocess.PIPE)
ret = proc.wait()
if ret != 0:
sys.exit(-1)
with open(tmp_file, 'r') as file_obj:
output = file_obj.read()
except Exception as err:
sys.exit(-1)
if 'hi' not in output:
raise Exception('bad news: output was %s' % (output))
def main():
app = QtGui.QApplication(sys.argv)
w = QtGui.QWidget()
w.resize(250, 150)
w.move(300, 300)
w.setWindowTitle('Simple')
w.show()
sys.exit(app.exec_())
if __name__ == '__main__':
verify_license()
main()