【轉】通過PyCharm 把Python 程序打包為exe


通過PyCharm 把Python 程序打包為exe

但是由於PyCharm 用了虛擬環境venv, 所有一些參數是有區別的,網上查詢了很久沒有查到這方面的信息,下面這些都是我自己探索出來的lin49940。

步驟一,點擊進入PyCharm 的輸入終端Terminal

步驟二,輸入下面的語句, mypython.py 替換為你自己的程序名稱

pyinstaller -c -F mypython.py -p E:/dream/venv/Lib/site-packages

這個命令是把程序打包為單獨的一個exe文件, 打包成功后的文件在E:\dream\dist 文件夾下,名稱為mypython.exe。

當然你也可以打包為多個文件的形式。

-p E:/*******    就是pycharm 當前項目的虛擬環境了, 里面有編寫程序使用到的包,這些包可能沒有加入到系統的python 環境中,我們必須指定這個路徑,依賴的包才能被打包程序加載到。

pyinstaller 命令具體參數, 可以查看官方文檔

https://pyinstaller.readthedocs.io/en/stable/usage.html#options

注意, 32位環境打包的exe 可以在32或64位的機器運行, 64位環境打包的exe 只能在64位的機器上運行。


 window 特有的(pyinstaller 3.0 才有)

          --win-private-assemblies

這個參數是指將共享的程序集變為私有程序集,這樣的話即使改變環境,編譯的程序依然只會執行私有程序集而忽視不同環境下的共享程序集。這個參數尤其適合在一台機器上編譯完成后在各種不同環境下執行。

       與之相近的還有一個參數

        --win-no-prefer-redirects

這兩個參數是在比較新的pyinstaller版本中才有的選項


對於圖形的開發工具, 不要使用 -F 當個文件的方式打包, 這樣的話, 你需要去配置環境, 用默認的-D 文件夾的方式打包就行了。

 

Window 運行, 是需要VC++ redist 的支持的,並且版本和(32位或64位)必須對, 不管是python 的wxPython 還是 c#的WPF 也是一樣的,使用 C#app 能使用 Chromium 內核的CefSharp 從V65 版本開始就要VC++ Redist2015 才行。

缺少的一些如api-ms-win-crt-runtime-l1-1-0.dll 這些, 其實就是沒有指定的 VC++ redist 版本(最低版本,一般有高版本的也行), 絕對不要自己下載或者去其他電腦拿這些dll 文件過來,很可能不兼任導致的莫名其妙的問題(CLR20R3,Error loading Python DLL loadLibrary Pyinstaller FormatMessageW failed 等奇怪的問題),安裝對應版本的VC++ Redist 才是根本解決方法。

VC++ redist 絕對絕對絕對要去微軟官網下載, 不要到國內一些下載網站下載,他們的東西雜七雜八的,有點小問題就能坑死你。

https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads


免責聲明!

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



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