Windows平臺使用PyInstaller將Python指令碼打包成可執行檔案
平時工作中,有時候需要將自己寫的Python指令碼在Windows執行,但是若Windows沒有安裝Python,那麼就不能直接執行Python指令碼。本文介紹一種方法,通過PyInstaller工具將Python指令碼打包成一個可執行檔案,可以直接在Windows執行,不管Windows是否安裝Python都可以執行該可執行檔案,詳細步驟如下:
1 安裝Python
首先在Windows上先安裝Python,這裡需要特別指出,如果編譯的Python可執行檔案要執行在64位系統,那麼需要安裝對應64位版本Python,否則後面編譯時會有錯。Windows的Python安裝比較簡單,直接下載相應的軟體包,執行安裝即可。下載連結:
選擇對應的系統版本和Python版本下載即可。由於我係統是64位,所以我選擇了Python2.7的最新版本Python-2.7.12。下載後直接執行安裝,安裝完成後,將Python和pip安裝路徑新增到系統PATH,就可以直接在命令列執行Python和使用pip安裝Python庫,執行Python輸出如下:
C:\Users\Administrator>python
Python 2.7.12 (v2.7.12:d33e0cf91556, Jun 27 2016, 15:24:40) [MSC v.1500 64 bit (
AMD64)] on win32
Type "help", "copyright" , "credits" or "license" for more information.
>>>
2 下載PyInstaller
PyInstaller是將Python打包成可執行檔案的工具,下載後解壓即可,連結如下:
我下載是最新版PyInstaller-3.2.tar.gz。
3 需要打包的Python指令碼
下面這段程式碼是要打包的Python指令碼,主要功能是檢測系統的物理cpu核數、邏輯cpu核數和cpu是否開啟超執行緒功能:
#!/usr/bin/python
# coding:utf8
import psutil
logical_cores = psutil.cpu_count(logical=True )
if logical_cores is None:
logical_cores = 1
physical_cores = psutil.cpu_count(logical=False)
if physical_cores is None:
physical_cores = 1
print "logical_cores: %d" % (logical_cores)
print "physical_cores: %d" % (physical_cores)
if logical_cores / physical_cores == 2:
print "hyper threading: enable"
else:
print "hyper threading: disable"
使用Python執行該指令碼,輸出如下:
E:\share\git\python_practice\demo>python get_cpu_info.py
logical_cores: 2
physical_cores: 2
hyper threading: disable
如果開啟超執行緒,邏輯cpu數是物理cpu數的兩倍
一般會提示缺少psutil庫,使用pip安裝即可,如下:
D:\Program Files\PyInstaller-3.2>pip install psutil
4 使用PyInstaller打包Python指令碼
進入PyInstaller目錄,將要打包的Python指令碼拷貝到PyInstaller目錄,這裡是get_cpu_info.py,在PyInstaller目錄下開啟命令列,執行以下命令打包Python指令碼:
D:\Program Files\PyInstaller-3.2>python pyinstaller.py -F get_cpu_info.py
一般會提示缺少pywintypes和pefile庫,使用pip安裝即可,如下:
D:\Program Files\PyInstaller-3.2>pip install pypiwin32
D:\Program Files\PyInstaller-3.2>pip install pefile
注:直接使用pip安裝pywintypes會提示找不到該庫,因為該庫從屬於pypiwin32,所以直接安裝pypiwin32即可
依次安裝缺少的庫後,再次執行打包命令。在PyInstaller目錄下會生成相應Python指令碼名稱的目錄,進入該目錄下的dist目錄,就可以找到打包好的可執行檔案。例如示例中打包生成的可執行檔案在目錄D:\Program Files\PyInstaller-3.2\get_cpu_info\dist下,進入該目錄,直接執行可執行檔案,輸出如下:
D:\Program Files\PyInstaller-3.2\get_cpu_info\dist>get_cpu_info.exe
logical_cores: 2
physical_cores: 2
hyper threading: disable
可以看到,不需要使用Python也可以直接執行。將該可執行檔案拷貝到其他Windows7 64位機器也可以直接執行,即使沒有安裝Python也沒問題。