1. 程式人生 > >pyinstaller打包django專案

pyinstaller打包django專案

  1. 安裝pyinstaller
    pip install pyinstaller
  2. 製作專案的.spec檔案
      進入django專案所在路徑,執行
    pyi-makespec -D manage.py
       在路徑下,生成一個.spec檔案
  3. 不修改.spec檔案,直接執行以下語句
    pyinstaller manage.spec

    我們可以發現能夠打包成功,但是在manage.exe所在路徑下,在cmd中執行manage.exe runserver,會發現以下錯誤:
    ImportError: No module named admin
    這種錯誤的原因是 django.contrib.admin在django專案中是隱式匯入的,所以pyinstaller打包時,並不能識別這種庫或者模組,導致打包出來的.exe中並不包括這樣隱式匯入的庫。
    如果碰到這樣的錯誤,只需要將這個庫新增到.spec檔案中的hiddenimports中即可。在接下來打包django專案缺少很多這樣的隱式庫,所以我.spec檔案中一併修改了,修改如下:(如果缺少什麼,直接在hiddenimports中加就可以了)


    注:這裡有個坑,特別需要關注
    如果打包好的.exe執行後,報錯ImportError: No module named apps,當你在hiddenimports中加入了'django.contrib.admin.apps',結果還是報同樣的錯誤。這是因為新增的apps模組不完整,要在hiddenimports中加入以下全部的apps模組:(這些apps在django專案中的settings.py檔案中可以全部找到,照著新增就可以了,另處還有context_processors模組,middleware模組也需要注意)
    'django.contrib.admin.apps','django.contrib.auth.apps','django.contrib.contenttypes.apps',
    'django.contrib.sessions.apps', 'django.contrib.messages.apps', 'django.contrib.staticfiles.apps',

  4. 以上hiddenimports弄好後,執行後會出現以下的錯誤
    TemplateDoesNotExist  這個是因為沒有找到templates檔案.

    可以根據錯誤提示將templates檔案新增至對應的路徑下,重新整理即可。其中front是我工程下一個放所有前端東西的檔案,templates是用來放html的一個資料夾。(所以具體的新增要根據錯誤提示是在哪裡找不到就新增至哪裡)

  5. 在第五步後,可以發現頁面已經出來,但是發現頁面沒有css和js了
    這是因為Pyinstaller 能找到templates(html files檔案),但不能找到css和js檔案。
    我的解決方案是參考了以下 :

    https://github.com/pyinstaller/pyinstaller/issues/2368
    我的具體操作是在django專案的settirngs.py檔案中加入

    STATIC_ROOT = os.path.join(BASE_DIR, 'front', 'static_root')

    其中front是我的資料夾,static_root是我在front下建立的一個空子檔案,用來收集工程中所有的靜態檔案。
    在django專案路徑下執行manage.py collectstatic會自動地將STATICFILES_DIRS列出的目錄以及各個App下的static子目錄的所有檔案複製到STATIC_ROOT。因為複製過程可能會覆蓋掉原來的檔案,所以,一定不能把我們辛苦做出來靜態檔案放這邊!
    然後來到urls.py檔案下,加入下面的一句話,加入的同時要匯入static庫

    from django.conf.urls import static
    urlpatterns += static.static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

    這句話的意思就是將STATIC_ROOT目錄的靜態檔案複製一份到網頁 STATIC_URL路徑下

    最後我們還需要將STATIC_ROOT中的靜態檔案打包到.exe中。這一步是在.spec檔案中的datas中加入下面一個元組

    datas=[(r'E:\G48\G48\front\static_root',r'.\front\static_root'), (r'E:\G48\G48\front\templates', r'.\front\templates')],

    考慮到第5步,再這裡我也直接將templates檔案打包到了對應的檔案。所以第五步就不用自己再複製templates檔案到指定的檔案夾了。
    最後.spec檔案看起來如下:

    一切準備好後,執行下面語句就OK

    pyinstaller manage.spec

相關推薦

pyinstaller打包django專案

安裝pyinstaller pip install pyinstaller 製作專案的.spec檔案   進入django專案所在路徑,執行 pyi-makespec -D manage.py    在路徑下,生成一個.spec檔案 不修改.spec檔案,

[原創]pyinstaller 打包Django 專案在外部IDC部署

背景 公司的內部專案需要部署在不通外網的外部IDC,對依賴包比較多的python 工程部署來說, 坑還是比較多的, 這裡簡要記錄採

pyinstaller exe 打包django專案

1.先安裝pyinstaller pip install pyinstaller 2.進入manage所在的目錄執行: py

打包django專案

1.安裝pip install pyinstaller2.在django專案目錄下執行pyi-makespec -D manage.py # 生成manage.spec檔案3.執行pyinstaller manage.spec遇到錯誤 p.p1 { margin: 0.0px 0.0px 0.0px 0.

Pyinstaller打包Scrapy專案

1.安裝pyinstaller 2.安裝pywin32 3.安裝其他模組 注意點: scrapy用pyinstaller打包不能用 cmdline.execute('scrapy crawl douban -o test.csv --nolog'.split()) 我用的

Pyinstaller打包Scrapy專案問題解決!!!(轉載)

使用Pyinstaller打包Scrapy專案的時候遇到各種坑,首先感謝La_vie_est_belle分享的文章,給了很大的幫助。結合他的分享我稍微整理一下。遇到的最難的坑,文末有提到。轉載地址:https://blog.csdn.net/la_vie_est_belle/

[django]專案打包構建

這是專案的檔案結構。 官方文件的教程 setuptools模組 setuptools應該是對標準庫中的setup模組進行了封裝,看起來更好用一些。 打包過程 前提 安裝setuptools模組,一

Pyinstaller打包使用了Scrapy的專案

可能會報錯No such file or directory: 'C:\\Users\\smh\\AppData\\Local\\Temp\\_MEI185642\scrapy\\VERSION' 解決辦法:開啟scrapy的安裝目錄下的__init__.py檔案:找到

python實戰專案詞雲生成器(wordcloud+jieba+pyinstaller打包)——詞雲生成軟體

最近學習了python的jieba分詞庫和wordcloud詞雲庫,誕生了想寫個小demo,使用python實現文章的詞雲圖的繪製,然後需要具有互動介面,並且能夠在沒有python環境的電腦下執行,方便不懂程式設計的人直接使用。 全部程式碼實現的打包exe檔案:WordCl

使用pyinstaller工具打包python專案程式碼生成exe檔案

pyinstaller是對python程式碼進行打包生成exe檔案的打包工具。 根據網址提供的下載連結,下載pyinstaller的原始碼,解壓該檔案,進入到檔案目錄下,執行命令: python setup.py install 安裝pyinstaller。 把原始

Python 3.6 使用 pyinstaller 打包exe文件遇到的問題

python pyinstaller 自己做了一個加密解密的小軟件,想打包成exe文件。在網上搜發現pyinstaller使用起來簡單點。在這裏記錄自己遇到問題使用的是Python 3.6版本,直接使用pip安裝pip install pyinstaller安裝過程很順利,安裝的是3.2.1版本使用看

pyinstaller 打包

mac data edi ack 6.0 read efi ... ted [root@mhc nsf]# pip install pyinstallerCollecting pyinstaller Downloading PyInstaller-3.3.tar.gz (

python 使用pyinstaller打包程序

直接 col 圖片 pytho strong 文件名 class .py http 使用pyinstaller 打包.py腳本,在其他計算機可以直接運行,不需要python環境 安裝pyinstaller庫 pip install pystaller 打包程序 pyi

pyinstaller 打包exe程序讀不到配置文件No such file

ont 時間 新博 print key ble 調用 參考 然而 挺久沒更新博客的,一來之前是覺得才疏學淺,記錄下來的太簡單沒人看。二來時間上不是很充裕(不是借口,有時間打遊戲,沒時間總結) 偶然有一次發現同事在搜索解決問題的時候正在看我博客的解決思路,很奇

pyinstaller 打包python文件成.exe程序

process 密碼 alt script tex exe 控制臺 網址 想要 使用pycharm寫好的代碼,每次都要使用pycharm來執行比較麻煩,打包成.exe程序後可以直接運行,還可以發到別的電腦上執行,比較方便。 1.打開cmd命令提示符窗口,cd到pip.ex

使用pyinstaller打包python小程序(沒有使用第三方模塊)

con 技術 http 自定義 bubuko 成功 三方 適應 格式 準備: 1,xxx.py程序文件 2,自定義的圖標文件:xxx.ico 圖標文件應該包含常見的多分辨率格式,以便適應在不同場合顯示,不能是單一圖片。 你可以用專用的軟件處理生成圖標,不過少量的圖標生產,其

pyinstaller打包程序 帶圖片

color all 分享圖片 目錄 找不到 image 接下來 path lec 首選說一下,這種打包方式只能在本電腦上使用運行正常 準備:.py文件:你的程序     gif文件:你要用的圖片 第一步: 在上面文件所在目錄打開cmd 輸入 pyi-makespec F

pyinstaller打包資原始檔及包含eyed3模組時提示找不到libmagic處理

這兩天用python寫了個小工具,用到了eyed3,用pyinstaller打包時提示找不到libmagic 版本資訊: python 3.6.5 pyInstaller 3.4 python-magic-bin 0.4.14 eyeD3 0.88 wxpython 4.0.3 eyeD3 在Win

pyinstaller打包資源文件及包含eyed3模塊時提示找不到libmagic處理

magic efault 模塊 filename 解決辦法 找不到 odin spa _file__ 這兩天用python寫了個小工具,用到了eyed3,用pyinstaller打包時提示找不到libmagic 版本信息: python 3.6.5 pyInstaller

打包maven專案時出現Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war (default-war)

當一個maven專案是web工程的時候,要注意新增web.xml檔案,一般預設是建立在main目錄下的webapp/WEB-INF/web.xml,當然,如果你選擇了maven 動態模板,會自動幫你建好這個目錄,如果沒有的話,你就要自己建立了。 如果沒有的話,會報錯:[ERROR] Failed