日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

类似pyinstaller_Python 打包工具对比,Nuitka vs Pyinstaller

發布時間:2023/12/10 python 63 豆豆
生活随笔 收集整理的這篇文章主要介紹了 类似pyinstaller_Python 打包工具对比,Nuitka vs Pyinstaller 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

py2exe,Pyinstaller,Cx_freeze,Nuitka都可以完成python打包的任務。

Pyinstaller和Nuitka都號稱跨平臺,但其實頂多只能算是工具本身跨平臺,實際體驗中不僅打包產生的文件不能跨平臺,能否成功打包本身也不確定。

Nuitka

nuitka的作用是將python程序轉換成C語言的可執行elf文件。這樣在運行時就可以享受到C語言處理過程中的優化,提高速度。經測試,Nuitka打包后的exe比Pyinstaller打包后的exe運行速度提升30%,PyQT5的UI文件轉換成py文件轉換成C語言后,界面秒開呀。

安裝:

sudo apt-get install nuitka

使用:

假設有python文件 main.py 其中import了 a.py, b.py, c.py

轉換為可執行文件只需運行:

nuitka --recurse-all main.py

運行后會生成main.exe文件,注意main.py中import的文件會被自動包含。

輸入下面代碼即可執行

./main.exe

但是有網友反饋了一些他的坑:

問題:

1.跨平臺性很差

這點,上面的"python打包工具對比"中也談到了。

具體在我使用時,在ubuntu中打包了一份python文件,拿到windows下運行,提示該版本的main.exe 與您運行的 Windows 版本不兼容。請查看計算機的系統信息,了解是否需要 x86 (32 位)或 x64 (64 位)版本的程序,然后聯系軟件發布者。

在centos中運行,提示有python依賴庫找不到。

2.使用 --standalone參數后無法生成.exe文件

官網介紹說使用該參數可以解決代碼對python是否安裝的依賴The created binaries can be made executable independent of the Python installation, with --standalone option.

可是我用這個參數后就無法生成可執行文件了。

Pyinstaller

安裝:

1、安裝pywin32下載安裝文件:查找到跟自己適用的python版本及window系統版本匹配的

使用pip命令安裝:pip install pywin32

2、安裝Pyinstaller下載安裝文件安裝:

使用pip命令安裝:pip install PyInstaller

運行:

pyinstaller main.py

即可得到可執行文件,雖然也存在本機編譯后的文件不能在服務器執行的問題:

gclt: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /root/gclt/libz.so.1)

但是在服務器上編譯的代碼是可以在本機成功執行,當然了,所謂的跨平臺,其實是個偽命題,Linux下編譯產生的可執行文件并不能在Windows和Mac OS下執行,前者會產生類似下面的錯誤(使用Nuitka時也是這樣)Too big to fit in memory

而在Mac OS下則會直接提示找不到相關可執行文件。

最后,分別在Linux,Windows,Mac OS下分別使用Pyinstaller完成任務

開發完python程序后使用pyinstaller 打包成exe程序后出現錯誤:

通常的打包命令:

pyinstaller.exe --hidden-import=queue -w -F $FileName$

運行出錯

為了定位問題的出現需要修改上述打包命令為:pyinstaller.exe --hidden-import=queue -F $FileName$

有時候將.py文件打包成.exe文件后,不一定能夠正常運行。但是點.exe后程序一閃而退,就不知道問題出在哪里?在運行程序后快速進行屏幕抓取:(可能需要抓多次)

錯誤信息

從上圖中,可以看出由于文件找不到導致程序出錯。

從這里也可以大致了解下pyinstaller成可執行程序的流程是:

會將exe解壓到系統某處(圖中為AppData/Local/Temp下),然后解釋執行。

2. 也可以在cmd命令行 或者 Windows PowerShell里面運行.exe文件

解決 FileNotFoundError 問題

然后使用如下命令打包:pyinstaller.exe --onefile --additional-hooks-dir=. --hidden-import=queue -w -F robotManagerTools.py

總結

以上是生活随笔為你收集整理的类似pyinstaller_Python 打包工具对比,Nuitka vs Pyinstaller的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。