Nuitka 打包python專案

丛影HHZ發表於2024-06-26

前言
我的專案是一個基於python11,帶pyqt6的UI的多模組專案,入口檔案是main.py

遇到問題:
1.python專案使用了pyqt6做了UI介面
使用引數 --enable-plugin=pyqt6
python -m nuitka --onefile --windows-disable-console --enable-plugin=pyqt6 --follow-imports main.py

2.如何打包資料檔案
專案中除了程式碼檔案,還有一個配置資料夾,想一起打包
使用引數 --include-data-dir="PC_"="PC_"

python -m nuitka --onefile --windows-disable-console --enable-plugin=pyqt6 --follow-imports --windows-icon -from-ico=./SRC/UI/icon.ico --include-data-dir="PC_"="PC_" main.py

3.資料資料夾中含有dll、bin檔案,使用--include-data-dir,這兩個檔案會被忽略
使用引數--include-data-file,單獨把這兩個檔案給打包了
python -m nuitka --onefile --windows-disable-console --enable-plugin=pyqt6 --follow-imports --windows-icon-from-ico=./SRC/UI/icon.ico --include-data-dir="PC_"="PC_" --include-data-file="PC_/rev.dll"="PC_/rev.dll" --include-data-file="PC_/TEMP.bin"="PC_/TEMP.bin" main.py

4.打包的資料檔案怎麼使用
跟exe一起打包的資原始檔,在使用的時候會釋放到C盤的某個路徑下,因此要使用打包的資料檔案,就獲取exe的釋放路徑

# python程式碼
# 打包時的引數是--include-data-dir="PC_"="PC_",表示PC_資料夾會在exe執行檔案的同級目錄
    def copy_simu_config_file(self):
      
        src_path = os.path.dirname(sys.executable) # exe執行檔案的釋放路徑,這個就是打包的資料資料夾所在的路徑
        dst_path = os.path.abspath('')  # exe檔案所在的路徑

        copy_folder(os.path.join(src_path,"PC_"), os.path.join(dst_path,"PC_")) # 運算元據檔案,我這裡是把資料夾複製出來

相關文章