exe的32位和64位python版本之间的区别

时间:2019-02-13 10:07:39

标签: python pyinstaller

有一个脚本应在32位和64位Windows 7上运行。

 void doPrint(Node node){

    System.out.println("Creating a printer job...");

    PrinterJob job = PrinterJob.createPrinterJob();
    if (job != null) {
        System.out.println(job.jobStatusProperty().asString());

        boolean printed = job.printPage(node);
        if (printed) {
            job.endJob();
        } else {
            System.out.println("Printing failed.");
        }
    } else {
        System.out.println("Could not create a printer job.");
    }
}

脚本同时使用python 3.4 x64和x86(它们位于单独的文件夹中)工作,但是当我使用pyinstaller UnicodeEncodeError: 'charmap' codec can't encode character '\u2019' in position 103-104 :character maps to <undefined> (From exe console) 创建exe时,64位版本可以正常工作,并且x86因此错误而崩溃。 我使用pip分别为86和64个文件夹安装了pyinstaller。

脚本中的解码/覆盖:

py -m Pyinstaller script.py

信息-从sqlite3数据库中选择的数据。

在位版本上是否存在任何解码差异会导致此错误?

2 个答案:

答案 0 :(得分:0)

PyInstaller的输出特定于活动的操作系统和Python的活动版本。这意味着要为以下内容准备发行版:

  • 不同的操作系统
  • Python的不同版本
  • 32位或64位操作系统

您可以在该操作系统上以该版本的Python运行PyInstaller。执行PyInstaller的Python解释器是该软件包的一部分,它特定于操作系统和字长。

您是否在32位操作系统中尝试了.exe 32位文件?

答案 1 :(得分:0)

如果在64位系统中同时使用两个版本的Pyinstaller,则必须解决一个问题。 PyInstaller会搜索您当前的环境,并从当前环境中选择Windows重新分发DLL,这对于32位版本是错误的。您需要通过从vcruntime140.dll替换诸如C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\redist\x86\Microsoft.VC140.CRT之类的DLL文件来提供正确的版本,并将它们放在C:\Users\Username\AppData\Roaming\pyinstaller\bincache01_py37_32bit的Pyinstaller X86目录中,然后重新生成可执行文件。