DJANGO项目打包
这次是以python3版本
安装 打包工具
pip install pyinstaller
安装完后,在项目路径下,生成打包文件:manage.spec
在当前路径运行:
pyi-makespec -D manage.py
生成后继续运行
pyinstaller -D -i xxx.ico manage.spec
-D:打包成多个文件
-p:指定python安装包路径
-i:指定图标,我的图标放在同目录下
mian.py:要打包的文件,和图标放在同目录下了
-D与-F一一对应,-F是打包成一个单独的文件。
运行完后打包的的文件当前路径:dist/manage
如果打包后运行报错:
说明少包了,把’corsheaders’加入到 hiddenimports=[‘corsheaders’],重新运行
pyinstaller -D -i xxx.ico manage.spec
下面是manage.spec文件内容
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(['manage.py'],
pathex=['XXXX'],
binaries=[],
datas=[],
hiddenimports=[,'corsheaders'],#这是缺少引用的包放到这
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
[],
exclude_binaries=True,
name='manage',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
console=True )#弹不弹黑框:True弹/false不弹
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=True,
upx_exclude=[],
name='manage')
如果你项目里用多进程:multiprocessing
需要在mangage.py加这一句
multiprocessing.freeze_support()
如:
#!/usr/bin/env python
import os
import sys
import multiprocessing
def main():
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'TSDB.settings')
try:
from django.core.management import execute_from_command_line
except ImportError as exc:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
) from exc
execute_from_command_line(sys.argv)
if __name__ == '__main__':
multiprocessing.freeze_support()
main()
再打包成manage.spec