溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何打包Python Web項目實現(xiàn)免安裝一鍵啟動

發(fā)布時間:2021-10-11 17:34:07 來源:億速云 閱讀:181 作者:柒染 欄目:大數(shù)據(jù)

如何打包Python Web項目實現(xiàn)免安裝一鍵啟動,針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

一、現(xiàn)狀

Python 有諸多優(yōu)秀的 Web 開發(fā)框架供我們使用,比如Django、Flask、Sanic。正常的情況下,我們基于這些 Web 框架開發(fā)好了網(wǎng)站,最終都會使用 Nginx 搭配 uWSGI 或gunicorn 將其部署在 Linux 服務(wù)器上,這樣,用戶就可以通過 綁定的域名或 IP 地址訪問。

如何打包Python Web項目實現(xiàn)免安裝一鍵啟動

是的,這是正常的情況。

往往很多場景,我們面對的就不是一個正常的情況。正常的情況下一切環(huán)境的問題都不是問題,因為有運維的伙伴幫我們處理好了所有環(huán)境的問題,從Python特定版本的安裝,到特定依賴庫的安裝,再到服務(wù)的配置。一切都不需要操心。

但是,如果所有的這些問題都需要自己操心呢?那可真是一個災(zāi)難性的問題。Docker的出現(xiàn)解決了一部分的問題,但是對于完全小白而言,docker的安裝和使用,又成為了一個問題。

如何打包Python Web項目實現(xiàn)免安裝一鍵啟動

州的先生在開發(fā)MrDoc覓道文檔的時候,就遇到了這個問題。如果要源碼安裝 MrDoc,那么需要:

  • 安裝Python(基本不會出問題)

  • pip安裝依賴庫(非常容易出問題)

  • 安裝依賴的第三方軟件包(非常容易出問題)


很多想體驗一下 MrDoc 的小伙伴,直接就死在了第二步,各種報錯無所適從。

有 MrDoc 交流群里的熱心伙伴制作了docker鏡像,這解決了一定的環(huán)境問題,但是對于真正零基礎(chǔ)的計算機小白而言,命令行還是自帶恐懼屬性。

如何打包Python Web項目實現(xiàn)免安裝一鍵啟動

怎么辦呢?能不能讓Python編寫的Web項目像 PHP 或GO 語言編寫的Web服務(wù)一樣可以直接啟動呢?

在互聯(lián)網(wǎng)上逛蕩了老半天,發(fā)現(xiàn)老伙計——PyInstaller可以實現(xiàn)這個功能。

二、打包

PyInstaller是Python中一個用于將Python程序打包為可執(zhí)行文件的第三方模塊。  州的先生之前經(jīng)常使用它將PyQt5編寫的桌面圖形界面程序打包分發(fā)。來看看它在打包Web程序上的應(yīng)用。

PyInstaller官方提供了一個打包Django項目的文檔,其鏈接為:  https://github.com/pyinstaller/pyinstaller/wiki/Recipe-Executable-From-Django

按照這個文檔,我們根據(jù)項目的具體情況,運行下述命令:
   
     
   
   
   pyinstaller --name=mysite mysite/manage.py

就會得到一個dist文件夾,里面包含了運行Django項目的所有文件,我們打開命令行界面,使用xxx.exe文件就可以達到像正常使用:
   
     
   
   
   python manage.py
一樣的效果。比如運行runserver服務(wù):
   
     
   
   
   xxx.exe runserver

但是,很大概率是運行不起來的,報錯的信息,不是缺少模塊,就是缺少靜態(tài)文件。

我們需要顯式地告訴PyInstaller,哪些包、哪些模塊、哪些文件需要一起打包進去。  

在上一次運行 pyinstaller 命令之后,文件夾下會生成一個.spec后綴的配置文件,其實質(zhì)是一個Python文件,我們對其進行修改。

   
     
   
   
   import sys
      
    
    sys.setrecursionlimit(5000)

在文件第3行的位置,添加上述2行代碼,用于避免pyinstaller索引模塊層級的錯誤。

如何打包Python Web項目實現(xiàn)免安裝一鍵啟動

然后,在datas列表中,將Django項目的靜態(tài)文件目錄、媒體文件目錄、以及其他使用到的文件目錄全都以元組的形式添加進去。這會讓PyInstaller直接將這些文件打包到最后生成的文件夾中。

如何打包Python Web項目實現(xiàn)免安裝一鍵啟動

接著,在hidedenimports列表中,將Django項目的應(yīng)用模塊路徑也添加進去。可以根據(jù)每次生成的報錯來一個一個添加,但是那樣太浪費時間了,還不如直接都添加進去。

修改好了之后,我們把之前生成的build目錄和dist目錄刪除,使用spec文件調(diào)用Pyinstaller命令:
   
     
   
   
   pyinstaller MrDoc.spec

等待一會兒,整個Django項目就打包好了,其完整的打包文件如下所示:

如何打包Python Web項目實現(xiàn)免安裝一鍵啟動

三、效果

打包好之后,我們打開命令行界面,輸入命令:
   
     
   
   
   mrdoc.exe runserver
就啟動了Django Web網(wǎng)站,如下圖所示:

如何打包Python Web項目實現(xiàn)免安裝一鍵啟動

在瀏覽器上訪問:  127.0.0.1:8000   就可以看到我們的MrDoc覓道文檔了:

如何打包Python Web項目實現(xiàn)免安裝一鍵啟動


為了方便使用,我們還可以寫一個bat腳本,雙擊即可啟動它,免去打開命令行界面輸入命令的繁瑣:

   
     
   
   
   start ./mrdoc.exe runserver

這樣,一個免安裝、一鍵啟動的Django網(wǎng)站應(yīng)用就打包制作完成了。

關(guān)于如何打包Python Web項目實現(xiàn)免安裝一鍵啟動問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI