最近碰上python腳本佈署到用戶環境及打包後運算速度的議題,因此紀錄相關步驟。
本文目錄
1.下載embedded版本python
2.安裝pip
3.使用pip安裝其他library
4.安裝gcc
5.使用C將HelloTest.py 打包成HelloTest.exe
6.使用批次檔.bat來隱藏命令列執行窗口
- 下載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.exe
及HelloTest.py
在相同路徑,若不同路徑,python.exe
及HelloTest.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: