Python 如何自动使用pyinstaller和innosetup创建Django-App_EXE

Python 如何自动使用pyinstaller和innosetup创建Django-App_EXE,python,django,batch-file,inno-setup,Python,Django,Batch File,Inno Setup,我已经为django应用程序创建了一个EXE文件。每次创建EXE后,我都需要通过命令行运行EXE,例如: mysite.exe runserver 更详细地说: OS:windows(CMD),使用pyinstaller打包所有独立软件,然后使用innosetup制作安装程序 我已尝试创建一个批处理文件以自动运行EXE,如下所示: SET PATH=%PATH%;C:\"Program Files (x86)"\cook_cake\; start http://localhost:8000

我已经为django应用程序创建了一个EXE文件。每次创建EXE后,我都需要通过命令行运行EXE,例如:

mysite.exe runserver 
更详细地说: OS:windows(CMD),使用pyinstaller打包所有独立软件,然后使用innosetup制作安装程序

我已尝试创建一个批处理文件以自动运行EXE,如下所示:

SET PATH=%PATH%;C:\"Program Files (x86)"\cook_cake\;
start http://localhost:8000 & C:\"Program Files (x86)"\cook_cake\cookie_cake.exe runserver 
此批处理脚本未生成所需的结果。当我单击应用程序时,即使此批处理脚本也必须在后台运行。
我的假设是批处理脚本中存在错误。

对此,我有其他解决方案。我假设您的manage.py文件的源代码与下面提到的代码类似

import os
import sys

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "WebXapp.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)
在Webapplication文件夹中创建一个文件PortReader.xml,将此代码添加到其中

<Root>
    <Port>8001</Port>
</Root>

现在使用pyinstaller创建可执行文件。您可以在不提供命令的情况下使用exe。您还可以从运行服务器的xml文件中修改端口。

您提供的命令行和脚本不匹配,我不确定
http://localhost:8000
在您的示例中,但如果是单个命令,则将其放置在单独的行上<代码>开始“”http://localhost:8000“。给定一个命令行
mysite.exe runserver
和一个名为
cookie\u-cake.exe
的可执行文件驻留在
\Program Files(x86)\cook\u-cake\
中,您可能会使用类似于
Start”“/d”%ProgramFiles(x86)%\cook\u-cake”“cookie\u-cake.exe“runserver
的东西。应该没有必要修改
%PATH%
变量内容,我通常也不建议您修改
变量内容。
设置路径=%PATH%;C:\ProgramFiles(x86)\cook\u cake\不会做您认为它会做的事情。提示:空格和括号…@DavidPostill yea,用“Program Files(x86)”编辑了该问题@frankhk,您是否在第一条评论中没有发现任何有趣的内容,或者您是否对其中的某些内容感到非常恼火,以至于认为应该忽略。首先,您的问题标题、正文或评论都没有提到目录访问问题,权限升级或“管理员”、“环境”或
%PATH%
。其次,你错了;追加或修改
%PATH%
变量与此无关。只需右键单击批处理文件并选择
以管理员身份运行
,或以管理员身份打开
CMD.exe
,然后从那里运行它。
import os
import xml.etree.ElementTree as etree
if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "WebXapp.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

    port = None
    try:
        tree = etree.parse("WebXapp\\PortReader.xml").getroot()
        port = tree.find("Port").text.strip()
    except:
        port = "8000"

    execute_from_command_line(["manage.py","runserver","0:%s"%port])