【问题标题】:cx_freeze executable - Py_Initialize: Unable to load the file system codeccx_freeze 可执行文件 - Py_Initialize:无法加载文件系统编解码器
【发布时间】:2018-11-09 00:17:59
【问题描述】:

我正在使用 cx_freeze 将我的 Python 脚本打包为独立的可执行文件。 exe 在打包的机器上运行良好(使用 python 3.5 和所有相关包)。

但是当我将创建的文件夹 cx_freeze 复制到另一台机器时,我得到了这个错误:

我的 cx_freeze 脚本:

import sys
import numpy
import os.path
from cx_Freeze import setup, Executable

os.environ['TCL_LIBRARY'] = r'C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\tcl\tcl8.6'
os.environ['TK_LIBRARY'] = r'C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\tcl\tk8.6'


setup(
    name = "DocSum",
    version = "1.0",
    options = {"build_exe": {"packages":["idna","asyncio", "encodings","numpy", "jinja2.ext"]}},
    description = "DocSumRESTfulServer",
    executables = [Executable("DocSumRESTfulServer.py", base = None)]
    )

知道可能是什么原因吗?我认为exe应该是独立的(在没有python的机器上运行)。我错了吗?

【问题讨论】:

  • 除非你出于某种原因需要使用cx_freeze,否则你也可以试试 PyInstaller,它做同样的事情。
  • 是的 - 我上次使用 cx_freeze 时 :) 存在不包括 MS redist 等所有依赖项的问题 - 所以你显然错过了另一台电脑上的一些东西,你必须手动添加到包中做你的 prog 的安装程序
  • 感谢您的回答。我还得到了 undertheseasumy 的依赖项,它们没有包含在 pyinstaller 中。我比较了机器之间所有安装的组件,它们是相同的。我真的很迷茫,如果你有任何其他想法,我会很高兴听到。
  • 如果有帮助:我将 2 个 exe 打包在 2 台不同的机器上,它们都只能在打包的机器上工作,而不能在另一台机器上工作。

标签: python windows cx-freeze


【解决方案1】:

似乎并不是所有的依赖都编译成功了。 如果你想拥有一个独立的可执行文件,我推荐 pyinstaller

然后 pip 安装它:

pyinstaller.exe --onefile  yourFile.py

--onefile 标志用于将所有内容打包成一个可执行文件。您的可执行文件将在 dist 文件夹中找到。

你也可以试试这个site

【讨论】:

  • 如何在可执行文件上关注sym_links您的系统永远不会提供它! 像这样:numpy 在他的应用程序上不起作用。
  • 感谢您的快速回答。如上所述,我还得到了 undertheseasumy 的依赖项,它们没有与 pyinstaller 打包。
【解决方案2】:

我遇到了同样的问题。最后我发现我还需要复制我的python37.dlllib 目录。 如果exe、dll和目录在同一个目录下,就可以了。

我也想要一个 exe。

【讨论】:

    猜你喜欢
    • 2017-10-17
    • 2011-08-07
    • 2018-12-26
    • 1970-01-01
    • 1970-01-01
    • 2019-02-03
    • 2015-08-26
    • 2019-06-02
    • 2019-11-26
    相关资源
    最近更新 更多