轉換python指令碼為可執行程式的方式

2021-06-21 10:58:43 字數 1693 閱讀 2919

背景:

部分工具使用python指令碼編寫,而目標伺服器,沒有安裝python包,導致使用工具不方便,還需要另外安裝python.

目前主要有2個主流軟體,可做此類轉換,把對應工具指令碼轉換為exe;

py2exe:缺點是和不同的python 版本強相關,只能支援windows

pyinstaller:綠色,解壓即可用,2.6以上的版本,只要額外安裝一下python32擴充套件即可,支援所有python版本; 支援所有主流作業系統(如生成linux下可執行程式)。

主要介紹下pyinstaller的使用

官方介紹:

pywin32擴充套件:

轉化成可執行程式的2種選擇:

目錄形式 -- 指令碼和資源檔案存在於乙個目錄或者目錄樹中

由於我這裡需要暴露配置檔案給工具使用者修改,所以採用第二種方式

源指令碼目錄: d:\automan.scanfilepwd

pyinstaller解壓路徑:f:\software\software\work\python\pyinstaller-2.1

1、執行如下命令 生成初步的exe工具

f:\software\software\work\python\pyinstaller-2.1>

python pyinstaller.py d:\automan.scanfilepwd\automan.scanfilepwd.py

2、手工修改f:\software\software\work\python\pyinstaller-2.1\automan.scanfilepwd下的automan.scanfilepwd.spec檔案,執行需要增加的配置檔案以及其他資源檔案:

coll = collect(exe,

a.binaries,

a.zipfiles,

a.datas+[('config.ini','d:\\automan.scanfilepwd\\config.ini','data'), ('cpu.class','d:\\automan.scanfilepwd\\cpu.class','data'),('keyfile.txt','d:\\automan.scanfilepwd\\keyfile.txt','data'),('readme.txt','d:\\automan.scanfilepwd\\readme.txt','data'), ('run.bat','d:\\automan.scanfilepwd\\run.bat','data'), ('whiltfile.txt','d:\\automan.scanfilepwd\\whiltfile.txt','data')],

strip=none,

upx=true,

name='automan.scanfilepwd')

3、再次執行轉換命令,引入spec檔案,新增資源檔案到目標目錄

f:\software\software\work\python\pyinstaller-2.1>

python pyinstaller.py ./automan.scanfilepwd/automan.scanfilepwd.spec

完成:f:\software\software\work\python\pyinstaller-2.1\automan.scanfilepwd\dist\automan.scanfilepwd

最終這個目錄下的所有內容,就是以automan.scanfilepwd.exe為核心的執行包;可以執行在沒有安裝python的機器上,

python 執行可執行程式

python do exe.pyw coding utf 8 import os exe dir c program files q dir exe file q dir.exe def do cmd dir,file if os.access dir,os.f ok os.chdir dir if...

Android可執行程式

最近應用了android kernel下高通的乙個security patch,各種方式出log,也沒有走到patch處。通過網上查詢,看到有人寫了個main函式,呼叫此patch所在的module。但是建立出執行檔案,push到某家手機的 system bin下,告訴是唯讀檔案系統,不能push進...

為服務的可執行程式加上引數

在windows 的系統服務中,有很多的服務都是使用相同的程式集的,不同的是他們使用不同的引數啟動。而在我們的需求中,也可能有這樣的應用場景,雙擊我們的程式時,直接開啟乙個窗體應用程式,而同時,這個窗體應用程式中也包含了某些服務的 因此我們也想把該程式註冊成為服務。由此,我們為程式新增了乙個引數 s...