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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

【Python】如何发布编写好的Python应用程序之Python Release for Windows(附踩坑经验)

發布時間:2023/12/29 windows 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Python】如何发布编写好的Python应用程序之Python Release for Windows(附踩坑经验) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

運籌優化博士,只做原創博文。更多關于運籌學,優化理論,數據科學領域的內容,歡迎關注我的知乎賬號:https://www.zhihu.com/people/wen-yu-zhi-37

最近寫了幾個Python的小程序給朋友使用,因為朋友完全就是一個商務運營人員,對編程語言什么的一竅不通,自然我也不可能讓他安裝Python編譯器來運行我的源代碼,并且這個小程序未來也是打算給普通用戶用的,普通用戶自然也沒有Python運行環境。

所以我一開始是想把寫好的Python代碼打包成.exe給他使用,前后折騰了Pyinstaller,Py2exe 發現問題多多,打包后的.exe不是體積巨大就是各種錯誤。偶然間發現了 Python Release for Windows,試用之后發現部署起來方便,靈活度也比較高。因為商務人員的操作系統都是Windows x64的,我們也不需要考慮跨平臺使用,這樣的話 Python Release for Windows 就比 Pyinstaller 和 Py2exe 更實用一些。

那么如果你和我遇到相同的問題,你想把你的Python應用程序在本地部署,如果你想把Python應用程序轉化為.exe方便給沒有Python編譯器的人使用的話,那么本文就是一個很好的替代方案。

1 Python Release for Windows 安裝包下載

在 Python Releases for Windows 找到所需Python版本的 Windows embeddable package 下載。

我選得是Python 3.9.9 下載解壓之后得到 python-3.9.9-embed-amd64 文件夾。這個文件夾里其實就是一個輕量級的免安裝的Python編譯器環境,壓縮文件也就幾十兆吧不算大。這使得我們可以 在Windows平臺下 都可以運行 Python環境。

2 Python環境配置

單單有一個Python編譯器環境還是不行的,因為我們的應用程序基本都需要調用很多包,而現在我們剛下載下來的這個Python編譯器環境還是一片空白的,沒有安裝所需的包。接下來我們要把我們程序所需的包安裝到這個Python編譯器環境中去。其實這個過程和conda里或者正常Python里配置環境的過程基本一致。

2.1 安裝 Pip

新下載的Python編譯器還沒有安裝pip,沒有pip我們安裝別的包就很不方便,所以第一步我們首先安裝pip。
在這個網站里下載 get-pip.py文件:https://bootstrap.pypa.io/get-pip.py,然后將 get-pip.py文件放在解壓后的python-3.9.9-embed-amd64文件中,如下圖所示:

在命令行中輸入:python get-pip.py --no-warn-script-location
如下圖所示即可完成pip的安裝:

安裝完成后還可以在 ./Lib/site-packages 文件夾下看到目前已經安裝過的包,確認pip確實已經安裝了。這個其實和正常的Python和Anaconda里是一樣的。

2.2 安裝其它包

pip包已經安裝成功了,接下來我們可以用pip來安裝其它的包。在命令行中調用如下指令,發現 Lib/site-packages 并不在我們的系統路徑中。
所以接下來我們需要把 Lib/site-packages 路徑添加進來,這樣python才能識別出剛才安裝的pip包。在文件夾下找到 python39._pth 文件并打開,此時打開后的內容為:

然后將該文件修改為如下內容并保存:
對照一下修改了2處內容,1是在第三行添加了… 2是取消了最后一行對import size的注釋。修改后的文件如下所示方便大家復制。

python39.zip . .. # Uncomment to run site.main() automatically import site

打開命令行,驗證確實Lib/site-packages路徑已經被添加進來了。
接下來就可以用pip安裝你程序所需的包了,如下所示是安裝pandas和numpy記住這里要把你所需的所有的包都要安裝進來才能成功運行的你的代碼。

3 發布程序

我們要發布的python源代碼很簡單,如下所示:

import pandas as pddf = pd.read_excel("./demo_data.xlsx") print(df)

我們把如上代碼存在read_excel.py中,并且把它放到python-3.9.9-embed-amd64平級的文件夾中,如下圖所示:
緊接著在命令行中運行 python read_excel.py 即可在命令行中運行該代碼,如下圖所示:

考慮到我們的用戶,可能也不太會使用命令行或者說命令行使用起來比較麻煩,我們進一步寫一個.bat文件將,上面的命令行放入.bat腳本文件中幫我們執行,用戶只需要雙擊運行.bat文件就可以運行代碼了,無需在命令行中輸入指令了。.bat文件內容如下所示:

cd /d %~dp0 python read_excel.py cmd.exe

第一行:cd /d %~dp0 表示切換到當前文件運行的目錄。
第二行:python read_excel.py 表示運行read_excel.py程序。
第三行:cmd.exe 表示啟動命令行。
下圖所示是運行.bat文件得到的結果:

可以看到運行.bat文件也可以和命令行運行相同的結果。

4 踩坑經驗(已安裝Anaconda環境會覆蓋新環境的問題)

到上面為止其實已經完成了python的環境的部署,但是在我自己的電腦上卻發現程序運行報錯,錯誤提示顯示是缺某個python的包,而我已經安裝過了這個包。這個時候我發現由于我安裝了Anaconda所以在命令行中python默認會選擇Anaconda下的python而不會選擇我新部署的python-embed環境,發現這個bug之后,我進行了三個地方的修改:
1 我將 python-embed文件夾下的 python.exe 改名為 python_embed.exe,這么做的目的就是為了區分出python關鍵字,因為python關鍵字已經被Anaconda占用了,所以我通過改名后將兩個python環境區分出來。下次調用python_embed關鍵字就知道是我要啟動新安裝的python環境,而不是啟動Anaconda里的python環境了。
2 將要執行的python程序和python_embed.exe放到同一個文件夾下

3 把start.bat文件夾修改為如下

cd /d %~dp0 cd python-3.9.9-embed python_embed main.py cmd.exe

和之前的start.bat文件比較修改了兩個地方:1是加了一句 cd python-3.9.9-embed,這是因為我們要進入到子文件夾下面才能開始執行,2是把 python main.py 改為 python_embed main.py,這樣就是運行我們要的python環境,而不會調用Anaconda下的python環境。

總結

總得來說我覺得 Python Release for Windows實用性還是蠻高的,Python Release for Windows的優勢有以下幾點:
1 哪怕你的代碼調用了很多包,你只要按照你配置Anaconda或者Python環境的方式一步步就可以把環境配置到 Python Release for Windows 里。不像Pyinstaller 和 Py2exe 經常出現一些莫名其妙的問題,尤其是包調用的多了,也很難找出來問題在哪里。
2 打包后程序體積小便于他人使用,同樣的代碼 我用Pyinstaller 能有1個多G的大小,而Python Release for Windows也就100多M,壓縮之后也就40多M。這么一小的體積就可以包括一個python環境,輕便環保便于發送。
3 Pyinstaller 生成 exe 需要很長時間,生成的過程還經常報錯。相對來說 Python Release for Windows 則不存在此類問題。

參考文獻:

最簡單的方式發布你的Python應用 - 云+社區 - 騰訊云

總結

以上是生活随笔為你收集整理的【Python】如何发布编写好的Python应用程序之Python Release for Windows(附踩坑经验)的全部內容,希望文章能夠幫你解決所遇到的問題。

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