2017-02-14 15 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以管理員權限運行。

相關問題