2017-02-14 167 views
14

我正在使用Python 3.3.3,并且我一直试图从一个简单的.py脚本构建一个.exe。Python,PyInstaller错误:没有名为“Encodings”的模块和系统编解码器丢失

我的剧本是这样的:

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'

我已经尝试过进口'编码'模块在我的testscript,但它仍然无法正常工作,我也尝试py2exe,它也不工作。

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

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

+0

你有什么想法:'你的SYS编码数据在哪里',如何工作python'encodings'?公共用法中的所有OS细节?初始化意思'未注册“。这个问题与你的'python信息级别'有关。所以一个诀窍:这个代码工作在空闲的COS上授予许多权限并且在更多服务/类上注册(非公开)。初始化“永久/临时”的风格? – dsgdfg

+0

是的,我知道'这不是low_level评论'! – dsgdfg

+0

重复的http://stackoverflow.com/questions/5694706/py-initialize-fails-unable-to-load-the-file-system-codec –

回答

2

这可能是因为pyinstaller没有在第一个地方包含模块。你可以尝试2种解决方案。

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

  • pyinstaller --onefile --paths = /路径/到/模块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进口= MODULENAME Testscript.py
  • 您还可以在.spec文件中指定隐藏导入。与名hook-encodings.pyC:\Python\Lib\site-packages\PyInstaller\hooks位置
+0

或者你可以(从任何目录,如果pyinstaller在你的路径)运行“pyinstaller /path/to/your.spec” – Back2Basics

0

你使用哪个Windows版本(7或10)?

这个问题似乎是相对于用户的特权......并假设它类似于this issue,你可以先尝试运行的exe 文件具有管理员权限,而如果再次failling,尝试运行“ Pyinstaller“从cmd.exe以管理员权限运行。

相关问题