Python,PyInstaller错误:没有名为“Encodings”的模块和系统编解码器丢失

时间:2017-02-14 11:08:06

标签: python exe py2exe pyinstaller

我正在使用Python 3.3.3,并且我一直在尝试从简单的.py脚本构建.exe。

我的脚本如下所示:

import encodings

print('Test')

并正确执行。

当我尝试使用此命令使用PyInstaller构建它时:

pyinstaller --onefile Testmodul.py

并尝试打开我的.exe,显示此错误: Fatal Python error: Py_Initialize: unable to load the file system codec, ImportError: No module named 'encodings'

我已经尝试在我的测试文件中导入'编码'模块,但它仍然无法正常工作,我也尝试了py2exe,它也完全无法正常工作。

我有什么问题吗?我必须在PATH中设置一些东西吗?已经包含了“C:\ Python33”的正确路径。

编辑:对于有这个问题的每个人:我放弃了,在全新安装windows和python以及所有其他东西之后,我再次尝试了它,就像以前一样,它没有问题。它是值得一试,如果你真的很绝望!

3 个答案:

答案 0 :(得分:2)

这可能是因为pyinstaller首先没有包含该模块。请尝试以下解决方案之一。

1)在编译期间指定模块的路径:

  • pyinstaller --onefile --paths = / path / to / module Testscript.py

2)指定.spec文件中的路径:

  • 首先运行此命令(在pyinstaller的目录中):

    python Makespec.py --onefile /path/to/yourscript.py
    
  • 现在您拥有.spec文件。在文本编辑器中打开它,并将模块的路径添加到pathex。

    pathex=['C:\\path\\to\\module']
    
  • 然后,构建你的程序:

     python Build.py /path/to/yourscript.spec
    

3)使用隐藏导入:

  • pyinstaller --onefile --hidden-import = modulename Testscript.py
  • 您还可以在.spec文件中指定hidden-import。

答案 1 :(得分:0)

将名为hook-encodings.py的挂钩文件添加到C:\Python\Lib\site-packages\PyInstaller\hooks位置,并添加以下代码行以在挂钩文件中收集编码模块

from PyInstaller.utils.hooks import collect_submodules

hiddenimports = collect_submodules('encodings')

这可能有用, 这个答案可能会帮助你Pyinstaller Error for Djnago project "ImportError: No module named 'django.contrib.admin.apps'"

答案 2 :(得分:0)

您使用的是哪个Windows版本(7或10)?

此问题似乎与用户权限相关...并且假设它与this issue类似,您可能首先尝试使用管理员权限运行 exe 文件,如果是再次出现问题,尝试运行" Pyinstaller"来自以管理员权限运行的 cmd.exe