1. 程式人生 > >Windows平臺使用PyInstaller將Python指令碼打包成可執行檔案

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也沒問題。

本次薦書:浪潮之巔

image