背景:
部分工具使用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...