摘要:現在,主流的工具有,本文只介紹的使用。準備工作開發環境和工具可以支持和。
python是腳本語言,如果你在開發機器上執行當然會很方便,可是如果你幫他人寫了個腳本,想在他人機器上運行,可能會遇到點困難。
為了讓腳本在他人機器上順利執行,你首先要幫他安裝python解釋器,如果你import了一些庫比如pandas,那這個也需要安裝,甚至相關的依賴也需要安裝。這個時間成本顯然是很大的,這部分工作也很枯燥,甚至會影響工作積極性,因此花一點時間,學會如何將python腳本打包為.exe文件,無需再安裝各種開發環境和依賴庫,是一件一勞永逸的事情。
現在,主流的工具有Pyinstaller、cz_Freeze、py2exe,本文只介紹Pyinstaller的使用。
1.開發環境和工具:
python 3.7
Pyinstaller 3.4
windows 10
Pyinstaller可以支持Python 2.7 和3.4—3.7。*
2.要打包的文件myscript.py源碼:
import pandas as pd df = pd.read_excel("D:/account.xls") result = dr.dropna() result.to_excel("D:/result.xls")
該源碼包含pandas, xlrd, xlwt等庫
3.在windows上安裝Pyinstaller
根據Pyinstaller官方表述,在windows上安裝Pyinstaller需要先安裝pywin32 或 pypiwin32, 否則待會兒轉換時,會提示無法找到win32com模塊的錯誤,雖然報錯缺win32com,但你要清楚缺的其實是pywin32 或 pypiwin32。
先用下面pip命令查看自己是否已安裝該模塊:
pip list
如果沒有找到,在pywin32下載地址下載對應版本的pywin32,或者直接用下面命令安裝pypiwin32:
pip install pypiwin32
最后安裝Pyinstaller:
pip install pyinstaller開始打包
可以使用下面命令打包
pyinstaller myscript.py
該命令執行后, pyinstaller會分析myscript.py文件,并且在腳本script.py所在文件夾中:
生成myscripy.spec
創建文件夾build
在build文件夾中生成日志文件和運行所需文件
創建dist文件夾
在dist文件夾中創建可執行文件夾myscript,在myscript文件夾中,就可以找到myscript.exe可執行文件
上面命令生成了很多依賴文件,如果想打包為獨立單一的.exe文件,使用-F參數
pyinstaller -F myscript.py
默認生成的執行文件執行時,會彈出一個命令行的窗口,如果不需要彈出,可以再加個-w參數
pyinstaller -F -w myscript.py遇到的問題
打包過程中難免會遇到問題,一般都會遇到缺少模塊的問題,比如,在對myscript.py打包時會報錯ModuleNotFoundError,缺少xlrd, xlwt等模塊,一般來說可以按照下面三個步驟進行解決:
1.Pyinstalled會從本地的環境路徑下找需要的模塊,例如python的包都放在site-packages目錄下,因此,Pyinstalled可以直接從該目錄下獲取需要的模塊。如果本地也缺少該模塊,先通過pip命令安裝。例如:
pip install xlrd pip install xlwt
2.如果你需要的模塊不在site-packages,而在你指定的目錄下,那打包時你可以通過-P DIR參數指定,其中DIR為你需要的模塊路徑:
pyinstaller -F -w -p DIR myscript.py
-p命令允許指定多個模塊路徑,可以用:分隔,或者多次使用這個參數,像這樣:pyinstaller -p DIR1:DIR2:DIR3 myscript.py或pyinstaller -p DIR1 -p DIR2 -p DIR3 myscripy.py
3.有時候并不是找不到模塊,而是代碼中有些模塊是隱含導入的,這樣的話就需要指出這些模塊,才能正確的打包,可以在命令行打包時使用參數--hidden-import MODULENAME指定模塊名,或者可以在打包后生成的myscript.spec文件中修改,該文件中有個參數hiddenimports=[]
配置為:
hiddenimports=["cython","sklearn","sklearn.ensemble","sklearn.tree._utils","scipy._lib.messagestream"]
然后再運行以下命令
pyinstaller myscript.spec
到此本片文章結束。
如果遇到什么問題,歡迎大家和我交流。如有不對之處,還望指正。
參考:
https://pyinstaller.readthedo...
https://blog.csdn.net/windows...
https://zhuanlan.zhihu.com/p/...
https://zhuanlan.zhihu.com/p/...
https://www.jianshu.com/p/95c...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/45050.html
摘要:打包成單文件所使用的命令為打包成文件夾所使用的命令為不管是哪種打包方式都會留下一個文件。這樣我們只需將腳本文件和腳本文件放置到同一文件夾下,運行我們的腳本。可以看到已經完美的反編譯出其中的腳本好了,相信大家已經明白了反編譯的原理。 近期閱讀了一篇很感興趣的文章,為免后續文章被刪無法再閱讀,現...
摘要:為什么要生成可執行文件不需要安裝對應的編程環境可以將你的應用閉源用戶可以方便快捷的直接使用打包工具安裝如果你的網絡穩定,通常直接使用下面的命令安裝即可當然了,你也可以下載源碼包,然后進入包目錄執行下面的命令,同樣可以安裝前提是需要安裝安裝過 為什么要生成可執行文件 不需要安裝對應的編程環境 可以將你的應用閉源 用戶可以方便、快捷的直接使用 打包工具 pyinstaller 安裝py...
摘要:最好是客戶雙擊,完事兒。目前已經兼容,以及和。一共會有個對象,分別是。,就是我們的工作目錄,存放我們的數據。編譯打包最后,我們執行就好了。打包的可執行文件會在里,中是一些打包時候需要的文件。輸出中最后有字樣,就算成功了。 showImg(https://img-blog.csdnimg.cn/20190303211533768.png?x-oss-process=image/water...
摘要:起因是從某發現了一個站掛機助手,依賴于直播的一個庫,作者的處理方式是將依賴的庫打包為,然后使用進行調用。它能夠在等操作系統下將源文件打包,通過對源文件打包,程序可以在沒有安裝的環境中運行,也可以作為一個獨立文件方便傳遞和管理。 起因是從某 hub 發現了一個B站掛機助手,依賴于直播的一個庫,作者的處理方式是將依賴的庫打包為 exe,然后使用 python 進行調用。 然后因為依賴的 l...
閱讀 2136·2023-04-25 18:49
閱讀 1840·2019-08-30 14:02
閱讀 2642·2019-08-29 17:24
閱讀 3323·2019-08-28 18:10
閱讀 2925·2019-08-28 18:03
閱讀 488·2019-08-26 12:01
閱讀 3309·2019-08-26 11:31
閱讀 1409·2019-08-26 10:29