歡迎您光臨本站 註冊首頁

如何打包Python Web項目實現免安裝一鍵啟動的方法

←手機掃碼閱讀     qp18502452 @ 2020-06-10 , reply:0

一、現狀

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

是的,這是正常的情況。

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

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

在開發MrDoc覓道文檔的時候,就遇到了這個問題。如果要源碼安裝 MrDoc,那麼需要:

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

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

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

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

有 MrDoc 交流群裡的熱心夥伴製作了docker鏡像,這解決了一定的環境問題,但是 對於真正零基礎的計算機小白而言,命令行還是自帶恐懼屬性。

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

在互聯網上逛蕩了老半天,發現老夥計――PyInstaller可以實現這個功能。

二、打包

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

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

按照這個文檔,我們根據項目的具體情況,運行下述命令:

    pyinstaller --name=mysite mysite/manage.py

 

就會得到一個dist文件夾,裡面包含了運行Django項目的所有文件,我們打開命令行界面,使用xxx.exe文件就可以達到像正常使用:

      python manage.py

 

一樣的效果。比如運行runserver服務:

      xxx.exe runserver

 

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

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

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

      import sys            sys.setrecursionlimit(5000)

 

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

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

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

修改好了之後,我們把之前生成的build目錄和dist目錄刪除,使用spec文件調用Pyinstaller命令:

    pyinstaller MrDoc.spec

 

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

三、效果

打包好之後,我們打開命令行界面,輸入命令:

      mrdoc.exe runserver

 

就啟動了Django Web網站,如下圖所示:

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

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

      start ./mrdoc.exe runserver

 

這樣,一個 免安裝、一鍵啟動的Django網站應用 就打包製作完成了。

總結

到此這篇關於如何打包Python Web項目實現免安裝一鍵啟動的方法的文章就介紹到這了,更多相關打包Python Web項目內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支持腳本之家!

                                                     

   


[qp18502452 ] 如何打包Python Web項目實現免安裝一鍵啟動的方法已經有277次圍觀

http://coctec.com/docs/python/shhow-post-237853.html