背景
公司的內部項目需要部署在不通外網(wǎng)的外部IDC,對依賴包比較多的python 工程部署來說, 坑還是比較多的, 這里簡要記錄采坑過程;
0x0 將Django 項目整體打包成和執(zhí)行目錄
經篩選調研選擇使用pyinstaller, 需求是外部IDC CentOS7.2 部署前后端分離項目,前端只要打包靜態(tài)文件丟進nginx share 目錄就好了,后端是DRF, 使用編譯安裝的python3.6.3;
只測試了linux 版的pyinstaller;
1.安裝pyinstaller
pip install pyinstaller
坑1:
如果你的python3 是編譯安裝的, 編譯時參數(shù)沒指定 --enable-shared , 則無法使用,需要重新編譯,帶上這個參數(shù);
2. 對入口文件執(zhí)行:
pyi-makespec -D manage.py
# 編譯
pyinstaller manage.spec
會生成dist/manage , 所有依賴會統(tǒng)統(tǒng)打包到這個目錄, 運行使用:
./manage runserver 0.0.0.0:8000
坑2:
django 工程可能隱式import很多依賴,需要修改生成的manage.spec hiddenimport 數(shù)組, 需要根據(jù)報錯補進去,具體從setting.py 中查找;