10

我终于让 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。

4

5 回答 5

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 为我修补了它!

于 2016-08-18T15:34:19.883 回答
4

我最近开始收到“运行时错误?(R6034)”它是在一个可靠的现有 python 程序上,我之前使用 pyinstaller 编译到一个文件。我注意到这个问题只发生在我在编译后重命名 exe 之后。一旦我将它重命名为原始的 exe 名称,R6034 就消失了。

Leason 学会了...不要在使用 pyinstaller 构建后重命名您的 exe。如果您需要您的 exe 具有不同的名称,则更改源 py 名称,然后重新编译。

于 2015-01-29T20:05:15.347 回答
1

这似乎是类似的问题https://github.com/pyinstaller/pyinstaller/issues/689

看看您是否可以使用该解决方法:

我能够通过使用 onedir 选项而不是 onefile 构建可执行文件来解决问题,然后只需将清单移动到包含单文件可执行文件的目录中,这样它就可以工作了。

似乎他们正在修复它在 3.0

于 2014-01-16T15:27:38.587 回答
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 安装

祝你好运

于 2016-06-22T10:30:11.323 回答
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()
于 2018-12-06T22:05:46.547 回答