安裝及使用Pyinstaller 將python檔打包成exe

  • 安裝Pyinstaller及pywin32
pip install pyinstaller
pip install pypiwin32
  • 打包
pyinstaller yourprogram.py
  • 常用 options
-y, --noconfirm 
直接取代原先資料夾,無需詢問

--clean 
清理

-D, --onedir 
打包成一個資料夾 (預設值)

-F, --onefile 
打包成一個執行檔

--distpathDIR 
編好的exe放的位置(default: ./dist)

--specpath DIR 
設定 spec 存放位置(default: current cwd)

--workpath WORKPATH 
temp的資料存放位置(default: ./build)

-n NAME, --name NAME 
命名執行檔跟 spec (default:第一個 script 的名字)

-p DIR, --paths DIR 
設定尋找 import 檔案的路徑 (通常為 sys.path)

--hidden-import MODULENAME, --hiddenimport MODULENAME
手動 import 找不到的 module,此指令可多次使用

--exclude-module EXCLUDES
忽略 module or package

-i <FILE.ico or FILE.exe,ID or FILE.icns>
--icon <FILE.ico or FILE.exe,ID or FILE.icns>
更改 icon





  • DLL load failed問題

  • module = loader.load_module(fullname)
    ImportError: DLL load failed: The specified module could not be found.
    打包的時候找沒有將某些.dll檔包進去,可以在cmd加上.dll檔的path

    例如打包skimage時,scipy的path錯誤可加上以下兩條
    --paths "C:\Python27\Lib\site-packages\scipy\extra-dll"
    --hidden-import scipy._lib.messagestream 

    留言