嵌入式python與GCC打包exe

Rick
6 min readJun 30, 2021

--

最近碰上python腳本佈署到用戶環境及打包後運算速度的議題,因此紀錄相關步驟。

Photo by SHaHraM Anhari on Unsplash

本文目錄

1.下載embedded版本python

2.安裝pip

3.使用pip安裝其他library

4.安裝gcc

5.使用C將HelloTest.py 打包成HelloTest.exe

6.使用批次檔.bat來隱藏命令列執行窗口

  1. 下載embedded版本python: python-3.6.8-embed-amd64

選擇版本、64位元or32位元...

https://www.python.org/downloads/release/python-368/

解壓縮後得到移動式python環境(python-3.6.8-embed-amd64)

接著,我們建立HelloTest.py來作範例

import osprint("PyFilePath>"+os.path.dirname(os.path.realpath('__file__')))
print("Hello Py!")
input()

開啟cmd,到python-embedded路徑下,輸入以下指令執行HelloTest.py

python.exe 腳本名稱.py
python.exe HelloTest.py

2. 安裝pip

找到python-embedded資料夾中的python36.pth

# import site前面的"#"刪除後儲存

python36.zip
.
# Uncomment to run site.main() automatically
import site

到官網下載pip,點擊get-pip.py進入後,按Ctrl+S儲存到python-embedded資料夾

cmd cd到python-embedded路徑,輸入get-pip.py 的完整路徑,例如:

D:\Rick\python-3.6.8-embed-amd64\python.exe get-pip.py

3. 使用pip安裝其他library

cmd cd到python-embedded\Scripts,輸入以下指令安裝需要的套件xxx,例如:numpy、opencv…。

pip.exe install xxx

4. 安裝gcc

開啟cmd 輸入以下檢查是否有安裝gcc,若報錯則需要安裝

gcc -v

到此處下載MinGW

安裝路徑加入到環境變數path,通常是:C:\MinGW\bin

接著開啟MinGW安裝gcc,安裝完成後即可調用C來打包python-embedded

5. 使用C將HelloTest.py 打包成HelloTest.exe

開啟notepad++建立以下HelloTest.c。注意:以下寫法python.exeHelloTest.py 在相同路徑,若不同路徑,python.exeHelloTest.py 前需另指定絕對路徑,例如python-3.6.8-embed-amd64\\python.exe

#include <stdio.h>
#include <stdlib.h>

int main()
{
system("python.exe HelloTest.py");
return 0;
}

開啟cmd cd到python-embedded路徑,輸入以下指令,python-embedded路徑下會產生HelloTest.exe,到此打包完成,跟PyInstaller打包檔案大小相比,小非常多!!

gcc HelloTest.c -o HelloTest.exe

6. 使用批次檔.bat來隱藏命令列執行窗口

建立以下HelloTest.txt,再把txt改為bat,點擊HelloTest.bat檔即可執行

@echo off 
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit
:begin
C:\Users\user\Downloads\python-3.6.8-embed-amd64\python.exe HelloTest.py

Reference:

https://www.zhihu.com/column/qaucodingdog

--

--

Rick
Rick

Written by Rick

理解、分解、再構成,我是說鍊金術

Responses (1)