Py_Initialize:无法加载文件系统编解码器(创新安装程序)(仍然没有解决方案)

时间:2017-08-21 12:38:45

标签: python inno-setup python-3.5

构建我的应用程序后(使用cx_Freeze),所以我得到了我的应用程序的exe文件。 exe效果很好。然后我使用 InnoSetup 制作了我的exe的安装文件,但在安装我的安装文件(我从InnoSetup获得)并运行应用程序(从桌面图标)后,它只是弹出错误而没有任何内容否则:

Py_Initialize: unable to load the file system codec
importError: No module named "encodings" 

我的系统变量如下:

PY_HOME:C:\Users\saad\AppData\Local\Programs\Python\Python35-32

PYTHONPATH:%PY_HOME%\Lib;%PY_HOME%\DLLs

路径:...;%PY_HOME%;%PY_HOME%\Scripts\

注意: Windows 7 64位 + Python 3.5.1 32位 + encodings文件夹存在于python安装文件夹中app文件夹 + 我复制了python35.dll python35.lib python3.dll python3.lib in the project folder + 只在我的电脑上安装了python35,我卸载并删除了其他python(python 25)

请帮助!

1 个答案:

答案 0 :(得分:0)

它已经解决了,但我认为解决方案看起来并不好。

解释:

首先,cx_freeze为我提供了build\exe.win32-3.5\文件夹中的exe文件和其他文件,还包了文件夹(编码,xml,集合,ctypes等)

在安装程序过程中,我将所有文件(但没有包文件夹)从build\exe.win32-3.5\复制到安装,因为我认为在安装后,应用程序将在<python>Lib中查找它们,因为我已经正确设置了系统变量! (我仍然不知道为什么!)

解决方案:在setup.iss中(我使用了InnoSetup)我只做了一条Source指令:

Source: "C:\Users\anonymous\Desktop\stage\python3\build\exe.win32-3.5\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Permissions: users-modify