[PYTHON]_ELVE_Python源代碼文件編譯成可執行文件(支持macOS High Sierra和window 10)


#0x01 背景

這兩天寫了一個抽獎的Python腳本,要生成可執行文件,總不能一直在sublime上運行吧,或者運行前先安裝Python,所以就查了一下怎么生成可執行文件,本篇包括mac下和win下,經本人測試,mac下生成.app(mac下的可執行文件為.app后綴)較win下容易一些。

我用的Python版本為:macOS下3.7,win下3.6;系統版本為:macOS 10.13 ;windows 10;

#0x02 准備工作

macOS下:mac下比較容易,僅需下載一個pyinstaller就可以了。在終端下輸入命令行

pip install pyinstaller

windows下:windows下比較麻煩一些,需要先安裝pywin32,再安裝pyinstaller,故執行順序為:

1.在pywin32的github上下載對應版本安裝:網站鏈接,最好下載最新的版本,我下的是224版本,下載好后安裝;

在安裝過程中如果出現找不到Python模塊,可以將下面的Python代碼運行一下,親測可用(這是網上一位大神寫得代碼,具體出處找不到了,如遇作者請聯系我標明,謝謝)。

import sys

from winreg import *

# tweak as necessary
version = sys.version[:3]
installpath = sys.prefix

regpath = "SOFTWARE\\Python\\Pythoncore\\%s\\" % (version)
installkey = "InstallPath"
pythonkey = "PythonPath"
pythonpath = "%s;%s\\Lib\\;%s\\DLLs\\" % (
    installpath, installpath, installpath
)


def RegisterPy():
    try:
        reg = OpenKey(HKEY_CURRENT_USER, regpath)
    except EnvironmentError as e:
        try:
            reg = CreateKey(HKEY_CURRENT_USER, regpath)
            SetValue(reg, installkey, REG_SZ, installpath)
            SetValue(reg, pythonkey, REG_SZ, pythonpath)
            CloseKey(reg)
        except:
            print("*** Unable to register!")
            return
        print("--- Python", version, "is now registered!")
        return
    if (QueryValue(reg, installkey) == installpath and
                QueryValue(reg, pythonkey) == pythonpath):
        CloseKey(reg)
        print("=== Python", version, "is already registered!")
        return
    CloseKey(reg)
    print("*** Unable to register!")
    print("*** You probably have another Python installation!")


if __name__ == '__main__':
    RegisterPy()
View Code

2.下載pyinstaller,這里和mac一樣,直接pip安裝

pip install pyinstaller

注:pip版本為9.多少來着以上最好,現在應該已經到了18以上

#0x03 編譯生成

在以上步驟安裝好后,就可以進行編譯生成文件(注:mac下生成的文件只能在mac下運行,windows下生成的文件也只能在windows下運行)

1.首先切換到項目的目錄,也就是Python腳本的位置

cd 腳本的位置

2.使用pyinstaller生成

pyinstaller test.py

可以看到,現在已經生成若干文件和文件夾,在dist文件夾下就可以找到與Python文件同名的可執行文件,(mac下為test.app,win下為test.exe)

3.每次運行都需要打開命令行窗口怎么辦,而且文件眾多,不好找,所以可以使用下面的代碼,(這個是我自己比較常用的代碼)

pyinstaller -F -w test.py

這里-F指的是生成僅一個文件,-w指的是不打開命令行窗口。

#0x04 另附pyinstaller常用命令

連接地址

注:-i命令需要.ico圖標


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM