Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 外部脚本和未应用的迁移_Python_Django_Subprocess_Django Migrations - Fatal编程技术网

Python 外部脚本和未应用的迁移

Python 外部脚本和未应用的迁移,python,django,subprocess,django-migrations,Python,Django,Subprocess,Django Migrations,我正在编写支持Django项目开发的脚本。首先,我考虑使用bash实现这一目的,但由于缺乏足够的知识和时间,我决定使用argparse编写一些东西,并使用subprocess运行系统命令 在我不得不跑步之前,一切都很顺利 ./manage.py migrate 我通过跑步来做到这一点: import subprocess ... subprocess.Popen("python {} migrate".format(absolute_path_to_manage_py).split()) 输

我正在编写支持Django项目开发的脚本。首先,我考虑使用bash实现这一目的,但由于缺乏足够的知识和时间,我决定使用argparse编写一些东西,并使用subprocess运行系统命令

在我不得不跑步之前,一切都很顺利

./manage.py migrate
我通过跑步来做到这一点:

import subprocess
...
subprocess.Popen("python {} migrate".format(absolute_path_to_manage_py).split())
输出看起来正常:

Operations to perform:
Apply all migrations: sessions, admin, auth, contenttypes, accounts, pcb
Running migrations:
Rendering model states... DONE
Applying contenttypes.0001_initial... OK
...
Applying sessions.0001_initial... OK    
它突然停止,但脚本仍处于活动状态(它仍在运行),更糟糕的是,当我运行django应用程序时,我收到一条消息,表示仍有一些未应用的迁移

我想我对从Python运行系统命令或与django迁移相关的东西一无所知

有什么提示我可以克服这个问题吗?

来自:

启动子流程的推荐方法是使用以下命令 方便功能。对于更高级的用例,当这些不可用时 根据您的需要,使用底层的
Popen
界面

您可以使用,它将等待命令完成:

returncode = subprocess.call(["python", absolute_path_to_manage_py, "migrate"])
从:

启动子流程的推荐方法是使用以下命令 方便功能。对于更高级的用例,当这些不可用时 根据您的需要,使用底层的
Popen
界面

您可以使用,它将等待命令完成:

returncode = subprocess.call(["python", absolute_path_to_manage_py, "migrate"])

您可以使用以下命令直接调用管理命令,而不是使用子流程:


您可以使用以下命令直接调用管理命令,而不是使用子流程:


POpen具有解锁功能。您应该通过管道或使用阻塞功能。您可以尝试subprocess.check\u call try
subprocess.check\u call([sys.executable,'manage.py','migrate'],cwd=os.path.dirname(绝对路径到管理路径))
,从其目录运行
manage.py
,并等待它完成(在非零退出状态下引发异常)POpen正在解除阻止功能。您应该通过管道或使用阻塞功能。您可以尝试subprocess.check\u call try
subprocess.check\u call([sys.executable,'manage.py','migrate'],cwd=os.path.dirname(绝对路径到管理路径))
,从其目录运行
manage.py
,并等待它完成(在非零退出状态下引发异常)