[原創]pyinstaller 打包Django 專案在外部IDC部署
阿新 • • 發佈:2019-04-18
背景
公司的內部專案需要部署在不通外網的外部IDC,對依賴包比較多的python 工程部署來說, 坑還是比較多的, 這裡簡要記錄採坑過程;
0x0 將Django 專案整體打包成和執行目錄 經篩選調研選擇使用pyinstaller, 需求是外部IDC CentOS7.2 部署前後端分離專案,前端只要打包靜態檔案丟進nginx share 目錄就好了,後端是DRF, 使用編譯安裝的python3.6.3; 只測試了linux 版的pyinstaller;
1.安裝pyinstaller
pip install pyinstaller
坑1: 如果你的python3 是編譯安裝的, 編譯時引數沒指定 --enable-shared , 則無法使用,需要重新編譯,帶上這個引數;
2. 對入口檔案執行:
pyi-makespec -D manage.py
編譯
pyinstaller manage.spec
會生成dist/manage , 所有依賴會統統打包到這個目錄, 執行使用:
./manage runserver 0.0.0.0:8000
坑2:
django 工程可能隱式import很多依賴,需要修改生成的manage.spec hiddenimport 陣列, 需要根據報錯補進去,具體從setting.py 中查詢;
坑3 :
一些讀取的檔案和目錄會和原始碼執行的路徑不一致,需要手動補上, 原始碼中調整或根據執行方式