Ошибка времени выполнения 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()