安装后 cx_freeze 无法获取 zip 导入程序

After install cx_freeze cannot get zip importer

在使用 distutils 构建后,我使用 Inno Setup 安装 Python 应用程序。 构建的输出包含顶级目录中的 *.pyd 文件,以及实际的可执行文件。

如果我然后 运行 这个应用程序从构建目录运行正常。

当我 运行 安装后安装脚本将 *.pyd*.dll 移动到子目录时,应用程序似乎无法再找到这些文件。我收到以下错误:

cx_Freeze Fatal Error

cannot get zipimporter instance

我怀疑是因为在安装中移动了所需的模块。有什么办法可以将它们移到路径中吗?或者如果 frozen 不知何故告诉应用程序在哪里查看?

如果将应用程序可执行文件移动到 libs 文件夹并指向它的快捷方式,我会很满意,但这看起来很草率,我真的不喜欢它。

需要说明的是,我的 build 目录应该看起来很熟悉。

build
  myapp.exe
  _bz2.pyd
  ...

安装后我故意以这样的方式结束。

Program Files\MyApp
  myapp.exe
  libs
    _bz2.pyd
    ...

此时您所有的 pyd、dll 和 zip 必须与 exe 位于同一文件夹中。这已在 cx_freeze 的功能列表中,但尚未实现。

看到这个post: http://sourceforge.net/p/cx-freeze/mailman/message/32075893/