Ошибка времени выполнения PyInstaller? (R6034)
Я, наконец, получил 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 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'))
Я огляделся, и у меня, похоже, не было той же проблемы.
Если он вообще меняет вещи, этот script использует wxPython.
Ответы
Ответ 1
Я собирался оставить комментарий, но не достаточно репутации. Хотя это было задано некоторое время назад, я недавно столкнулся с той же проблемой, и это оказалось ошибкой Pyinstaller с версией 3.2.
Результат exe завершается с помощью R6034 после обновления до pyinstaller 3.2:
https://github.com/pyinstaller/pyinstaller/issues/1985
PyInstaller 3.2, OneFile R6034, 32-разрядный Python 2.7.11
https://github.com/pyinstaller/pyinstaller/issues/2042
Похоже, они исправили это в последней версии dev, и предложили
pip install https://github.com/pyinstaller/pyinstaller/archive/develop.zip
Использование этого в моем файле требований вместо pyinstaller == 3.2 исправил его для меня!
Ответ 2
Недавно я начал получать "Runtime Error? (R6034)"
Это было на прочной существующей программе python, которую я использовал pyinstaller раньше, чтобы скомпилировать один файл. Я заметил, что проблема произошла только после того, как я переименовал exe после того, как он был скомпилирован. Как только я переименовал его в исходное имя exe, R6034 ушел.
Лисон узнал... не переименуйте свой exe после создания с помощью pyinstaller. Если вам нужно, чтобы ваш exe имел другое имя, измените имя исходного py и затем перекомпилируйте.
Ответ 3
Это похоже на аналогичную проблему https://github.com/pyinstaller/pyinstaller/issues/689
Посмотрите, можете ли вы использовать этот обходной путь:
Я смог исправить проблему, создав исполняемый файл, используя onedir вместо onefile, а затем просто перемещая только манифест в каталог, содержащий однофайльный исполняемый файл, который разрешил он работает.
Кажется, они исправляют его в версии 3.0
Ответ 4
У меня такая же проблема, не переименование чего-либо, я просто создаю -F и сбой с версией 3.2, однако эта ошибка не появляется с версией 2.1.
Ссылка:
https://github.com/pyinstaller/pyinstaller/releases/download/v2.1/PyInstaller-2.1.zip
Мой совет? утилита для удаления pyinstall
после этого вы должны установить версию 2.1, и вы готовы снова запустить ее.
. /setup.py build
. /setup.py install
Удачи.
Ответ 5
Эта ошибка также может возникать, если вы вызываете popen внутри встроенного exinstall exinstaller. Чтобы исправить эту ошибку, вы должны использовать явный дескриптор файла для stdout вызова popen, как в следующем примере.
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()