亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

如何打包Python Web項(xiàng)目實(shí)現(xiàn)免安裝一鍵啟動的方法

 更新時間:2020年05月21日 15:03:37   作者:戀習(xí)Python  
這篇文章主要介紹了如何打包Python Web項(xiàng)目,實(shí)現(xiàn)免安裝一鍵啟動,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

一、現(xiàn)狀

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

是的,這是正常的情況。

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

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

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

  • 安裝Python(基本不會出問題)
  • pip安裝依賴庫(非常容易出問題)
  • 安裝依賴的第三方軟件包(非常容易出問題)

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

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

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

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

二、打包

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

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

按照這個文檔,我們根據(jù)項(xiàng)目的具體情況,運(yùn)行下述命令:

<span><span style="font-size: 14px;">
pyinstaller --name=mysite mysite/manage.py
</span>
</span>

就會得到一個dist文件夾,里面包含了運(yùn)行Django項(xiàng)目的所有文件,我們打開命令行界面,使用xxx.exe文件就可以達(dá)到像正常使用:

<span>
<span style="font-size: 14px;">
python manage.py
</span>
</span>

一樣的效果。比如運(yùn)行runserver服務(wù):

<span>
<span style="font-size: 14px;">
xxx.exe runserver
</span>
</span>

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

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

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

<span>
<span style="font-size: 14px;">
import sys
</span>
</span>

<span>
<span style="font-size: 14px;">
sys.setrecursionlimit(5000)
</span>
</span>

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

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

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

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

<span>
<span style="font-size: 14px;">pyinstaller MrDoc.spec
</span>
</span>

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

三、效果

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

<span>
<span style="font-size: 14px;">
mrdoc.exe runserver
</span>
</span>

就啟動了Django Web網(wǎng)站,如下圖所示:

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

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

<span>
<span style="font-size: 14px;">
start ./mrdoc.exe runserver
</span>
</span>

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

總結(jié)

到此這篇關(guān)于如何打包Python Web項(xiàng)目實(shí)現(xiàn)免安裝一鍵啟動的方法的文章就介紹到這了,更多相關(guān)打包Python Web項(xiàng)目內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python爬蟲把url鏈接編碼成gbk2312格式過程解析

    python爬蟲把url鏈接編碼成gbk2312格式過程解析

    這篇文章主要介紹了python爬蟲把url鏈接編碼成gbk2312格式過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • 使用Python+Flask開發(fā)博客項(xiàng)目并實(shí)現(xiàn)內(nèi)網(wǎng)穿透

    使用Python+Flask開發(fā)博客項(xiàng)目并實(shí)現(xiàn)內(nèi)網(wǎng)穿透

    Flask是一個使用python編寫的輕量級Web框架,這篇文章我們將使用這個框架編寫一個屬于自己的博客網(wǎng)站!并教你如何通過使用內(nèi)網(wǎng)穿透工具處理項(xiàng)目,讓本地的項(xiàng)目可以在公網(wǎng)訪問,感興趣的可以了解一下
    2021-11-11
  • PyTorch模型創(chuàng)建與nn.Module構(gòu)建

    PyTorch模型創(chuàng)建與nn.Module構(gòu)建

    這篇文章主要為大家介紹了PyTorch模型創(chuàng)建與nn.Module構(gòu)建示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • 高性能web服務(wù)器框架Tornado簡單實(shí)現(xiàn)restful接口及開發(fā)實(shí)例

    高性能web服務(wù)器框架Tornado簡單實(shí)現(xiàn)restful接口及開發(fā)實(shí)例

    Tornado和現(xiàn)在的主流Web服務(wù)器框架(包括大多數(shù)Python的框架)有著明顯的區(qū)別:它是非阻塞式服務(wù)器,而且速度相當(dāng)快。得利于其 非阻塞的方式和對epoll的運(yùn)用,Tornado每秒可以處理數(shù)以千計(jì)的連接,這意味著對于實(shí)時Web服務(wù)來說,Tornado是一個理想的Web框架。
    2014-07-07
  • python3.6使用tkinter實(shí)現(xiàn)彈跳小球游戲

    python3.6使用tkinter實(shí)現(xiàn)彈跳小球游戲

    這篇文章主要為大家詳細(xì)介紹了python3.6使用tkinter實(shí)現(xiàn)彈跳小球游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • 使用Python和XPath解析動態(tài)JSON數(shù)據(jù)的操作指南

    使用Python和XPath解析動態(tài)JSON數(shù)據(jù)的操作指南

    JSON動態(tài)數(shù)據(jù)在Python中扮演著重要的角色,為開發(fā)者提供了處理實(shí)時和靈活數(shù)據(jù)的能力,動態(tài)JSON數(shù)據(jù)的獲取可能涉及到網(wǎng)絡(luò)請求和API調(diào)用,可以使用Python和XPath來解析動態(tài)JSON數(shù)據(jù),接下來小編就給大家介紹一下操作步驟
    2023-09-09
  • 使用Anaconda3建立虛擬獨(dú)立的python2.7環(huán)境方法

    使用Anaconda3建立虛擬獨(dú)立的python2.7環(huán)境方法

    今天小編就為大家分享一篇使用Anaconda3建立虛擬獨(dú)立的python2.7環(huán)境方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • 淺談Python中重載isinstance繼承關(guān)系的問題

    淺談Python中重載isinstance繼承關(guān)系的問題

    本篇文章主要介紹了淺談Python中重載isinstance繼承關(guān)系的問題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • 通過VS下載的NuGet包修改其下載存放路徑的操作方法

    通過VS下載的NuGet包修改其下載存放路徑的操作方法

    這篇文章主要介紹了通過VS下載的NuGet包如何修改其下載存放路徑,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09
  • 基于Python OpenCV實(shí)現(xiàn)圖像的覆蓋

    基于Python OpenCV實(shí)現(xiàn)圖像的覆蓋

    本文將基于Python、OpenCV和Numpy實(shí)現(xiàn)圖像的覆蓋,即小圖像覆蓋在大圖像上。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-02-02

最新評論