中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

發布時間:2021-10-11 17:34:07 來源:億速云 閱讀:188 作者:柒染 欄目:大數據

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

一、現狀

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

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

是的,這是正常的情況。

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

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

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

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

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

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

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


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

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

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

怎么辦呢?能不能讓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索引模塊層級的錯誤

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

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

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

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

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

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

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

三、效果

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

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

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

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


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

   
     
   
   
   start ./mrdoc.exe runserver

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

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

义马市| 通江县| 商水县| 屯昌县| 辉南县| 凤翔县| 都匀市| 辉县市| 崇仁县| 英吉沙县| 遵化市| 凤山县| 建湖县| 达州市| 涞源县| 榆社县| 汉川市| 巫溪县| 林西县| 北安市| 沈丘县| 北海市| 高雄市| 区。| 肃宁县| 深泽县| 天台县| 巴彦县| 凉山| 英吉沙县| 民勤县| 德江县| 桂阳县| 兴化市| 大安市| 额敏县| 申扎县| 东至县| 和平县| 成安县| 扎兰屯市|