gpt4 book ai didi

python - Pyinstaller - 具有自定义管理命令的 Django

转载 作者:太空宇宙 更新时间:2023-11-03 17:07:08 25 4
gpt4 key购买 nike

我正在尝试编译 Django (1.8) 应用程序,它在 Windows 7 上有 2 个自定义命令。我们使用 pandas 和其他 sci 库,因此我们通过 anaconda3 运行应用程序。

当我们使用Pyinstaller(3.0版本,通过anaconda pip脚本添加到anaconda3)时:

c:\Anaconda3\Scripts\pyinstaller.exe --name=compileTest  --exclude-module=PyQt4 --exclude-module=matplotlib  manage.py

我们得到了一个 Django 可执行项目,但没有自定义命令。

有人可以建议吗?

最佳答案

这通过包含/覆盖 django 运行时 Hook 对我有用。

https://pythonhosted.org/PyInstaller/#changing-runtime-behavior

--runtime-hook=pyi_rth_django.py 添加到 PyInstaller 命令中。

pyi_rth_django.py

注意添加的 omnibusd 命令。

# This Django rthook was tested with Django 1.8.3.


import django.core.management
import django.utils.autoreload


def _get_commands():
# Django groupss commands by app.
# This returns static dict() as it is for django 1.8 and the default project.
commands = {
'runserver': 'django.core',
'shell': 'django.core',
'startapp': 'django.core',
'startproject': 'django.core',
'test': 'django.core',
'testserver': 'django.core',
'validate': 'django.core',
'omnibusd': 'omnibus'
}
return commands


_old_restart_with_reloader = django.utils.autoreload.restart_with_reloader


def _restart_with_reloader(*args):
import sys
a0 = sys.argv.pop(0)
try:
return _old_restart_with_reloader(*args)
finally:
sys.argv.insert(0, a0)


# Override get_commands() function otherwise the app will complain that
# there are no commands.
django.core.management.get_commands = _get_commands
# Override restart_with_reloader() function otherwise the app might
# complain that some commands do not exist. e.g. runserver.
django.utils.autoreload.restart_with_reloader = _restart_with_reloader

关于python - Pyinstaller - 具有自定义管理命令的 Django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34479049/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com