【发布时间】:2022-01-11 02:17:22
【问题描述】:
我目前正在 larval 函数中调用主 python 文件,在该主 python 文件中我正在调用另外 2 个文件(PowerShell 和子 python 文件)问题是当 Laravel 函数被触发时它只调用主python 文件,但是当我使用终端调用主 python 文件时,所有文件的执行如下:
Laravel 函数:
public function initialize(Request $request)
{
$store_name = $request->get('store_name', 1);
if (empty($store_name)) {
return 'Missing store name';
} else {
$processes = File::get("/root/flask/android_api/processes.txt");
File::put('/root/flask/android_api/url.txt', $store_name );
$process = new Process(['python3.6', '/root/flask/android_api/buildAPK.py']);
$process->run();
if (!$process->isSuccessful()) {
throw new ProcessFailedException($process);
} else {
return 'Starting the processes to build';
}
}
}
在我的主要 python 文件中:
try:
p = subprocess.Popen(["/usr/bin/pwsh",
"/root/flask/android_api/set_apk_builder.ps1", '-ExecutionPolicy',
'Unrestricted',
'./buildxml.ps1'],
stdout=sys.stdout)
p.communicate()
except:
file = open ("/root/flask/android_api/log.txt", "w")
file.write ("fail")
file.close()
import slack
// call(["python", "/root/flask/flask.py"])
os.system('python3.7 /root/flask/flask.py')
编辑:
现在我将构建更改为直接从 laravel 函数生成 apk 使用这个命令:
public function initialize(Request $request)
{
$store_name = $request->get('store_name', 1);
if (empty($store_name)) {
return 'Missing store name';
} else {
return shell_exec('cd /var/www/html/androidProject && chmod +x gradlew && ./gradlew assembledemoDebug');
}
}
但是,命令行返回 Gradle 命令 build is started 但它不会创建文件夹并生成 apk
当前文件夹结构 /var/www/html 里面 html 是项目文件夹和 laravel 项目
注意:在我在 Laravel 函数中调用 Gradle 构建命令之前,我曾经调用 python 文件并且该 python 文件正在调用 Gradle 命令,但我遇到了同样的问题,没有创建 apk,但是当我从bash 命令它工作正常
【问题讨论】:
-
第一次运行没有
try/except以查看完整的错误消息。 -
你为什么要运行
flask.py两次?第一个call,下一个os.system?顺便说一句:您使用模块flask所以最好不要使用单词flask作为脚本名称和文件夹名称,因为稍后import flask可能会尝试加载您的脚本/文件夹而不是模块flask -
我确实尝试过,除了在开始时没有尝试,但什么也没发生,当我处理代码时,我两次调用 flask.py 是错误的,我正在双向测试,但我在提问之前删除了 cmets,问题现在更新了一个评论
-
如果它没有改变,那么也许你应该每隔几行保存文件/日志信息以查看执行了哪一行。也许它表明可能是什么问题。如果您没有得到任何信息,那么我们不知道问题出在哪里,我们也无能为力。
-
@furas 问题已更新
标签: python android linux gradle laravel-5