1. 程式人生 > >[原創]pyinstaller 打包Django 專案在外部IDC部署

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

背景

公司的內部專案需要部署在不通外網的外部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 :

一些讀取的檔案和目錄會和原始碼執行的路徑不一致,需要手動補上, 原始碼中調整或根據執行方式