linux下的python打包
一、pyinstaller
優點:打包簡單,將整個運行環境進行打包
缺點:打包文件大、臃腫、啟動慢
- 安裝pyinstaller包
pip install pyinstaller
- 打包一個文件
pyinstaller -D app.py
會在當前路徑中生成build、dist文件夾還有一個spec文件,你生成的exe就在dist里邊。雙擊即可運行。
參數:
參數 | 說明 |
---|---|
-h,–help | 查看該模塊的幫助信息 |
-F,-onefile | 產生單個的可執行文件 |
-D,–onedir | 產生一個目錄(包含多個文件)作為可執行程序 |
-a,–ascii | 不包含 Unicode 字符集支持 |
-d,–debug | 產生 debug 版本的可執行文件 |
-w,–windowed,–noconsolc | 指定程序運行時不顯示命令行窗口(僅對 Windows 有效) |
-c,–nowindowed,–console | 指定使用命令行窗口運行程序(僅對 Windows 有效) |
-o DIR,–out=DIR | 指定 spec 文件的生成目錄。如果沒有指定,則默認使用當前目錄來生成 spec 文件 |
-p DIR,–path=DIR | 設置 Python 導入模塊的路徑(和設置 PYTHONPATH 環境變量的作用相似)。也可使用路徑分隔符(Windows 使用分號,Linux 使用冒號)來分隔多個路徑 |
-n NAME,–name=NAME | 指定項目(產生的 spec)名字。如果省略該選項,那么第一個腳本的主文件名將作為 spec 的名字 |
二、nuitka
缺點:沒有打包依賴、環境、需要安裝c++編譯器
優點:啟動快、打包后的程序小、將Python代碼轉換成C或C++代碼
- 安裝Nuitka
pip install Nuitka# 安裝編譯依賴(ubuntu)
apt-get install gcc
apt-get install g++
apt-get install clang
- 打包
python -m nuitka --clang --standalone --show-memory --show-progress --nofollow-imports --plugin-enable=qt-plugins --follow-import-to=utils,src --output-dir=out --windows-icon-from-ico=./logo.ico demo.py
打包完目錄結構:
├─utils //源碼1文件夾
├─src // 源碼2文件夾
├─out // 生成的exe文件夾├─demo.build └─demo.dist└─demo.exe // 生成的exe文件
├─logo.ico // demo的圖標
└─demo.py // main文件
常用參數:
--clang 使用clang編譯器
--standalone 獨立環境,使結果可移植
--windows-disable-console 去掉CMD控制窗口
--output-dir=out 生成exe到out文件夾下面去
--show-progress 顯示編譯的進度
--show-memory 顯示內存的占用
--enable-plugin=pyqt5 打包pyqt5模塊的需要
--plugin-enable=tk-inter 打包tkinter模塊的需要
--plugin-enable=numpy 打包numpy,pandas,matplotlib模塊的需要
--plugin-enable=torch 打包pytorch的需要
--plugin-enable=tensorflow 打包tensorflow的需要
--windows-icon-from-ico=你的.ico 軟件的圖標
--windows-company-name=Windows下軟件公司信息
--windows-product-name=Windows下軟件名稱
--windows-file-version=Windows下軟件的信息
--windows-product-version=Windows下軟件的產品信息
--windows-file-description=Windows下軟件的作用描述
--windows-uac-admin=Windows下用戶可以使用管理員權限來安裝
--linux-onefile-icon=Linux下的圖標位置
--onefile 打包為單個exe文件
--include-package=復制比如numpy,PyQt5 這些帶文件夾的包或庫
--include-module=復制比如when.py 這些以.py結尾的叫模塊
--include-package-data=包含給定軟件包名稱中的數據文件,等號后軟件包名稱。有的時候Nuitka并不能正確分析出一些Python軟件包所需要使用的數據文件,在運行程序時提示FileNotFoundError等錯誤,此時就需要使用該選項。如:--include-package-data=ultralytics
--include-data-files= 按文件名包含數據文件,等號后的格式為<SRC=DEST>。SRC指的是文件夾的路徑,DEST指的是文件夾相對于打包結果的路徑,其中DEST只能使用相對路徑。如:--include-data-files=/Users/admin/Downloads/yolov5n.pt=./yolov5n.pt
--include-data-dir= 包含文件夾中的數據文件,等號后的格式為<SRC=DEST>。使用方法與--include-data-files=相同。
--follow-import-to=MODULE/PACKAGE 如果使用該模塊,請遵循該模塊;如果是一個包,請遵循整個包。可以多次給定。默認為空。
--nofollow-import-to=允許從導入過程中排除特定的子目錄
--follow-import-to=打包包含的文件夾
--remove-output 打包結束后刪除產生的臨時文件
參考:
python的打包神器——Nuitka