gpt4 book ai didi

python - 如何使用 exec 系统调用使用 C++ 的参数调用 Python 脚本

转载 作者:太空宇宙 更新时间:2023-11-04 12:33:20 26 4
gpt4 key购买 nike

我想从 C++ 程序调用 python 脚本作为子进程。

我想运行这个命令:/home/minty99/.virtualenvs/venv_waveglow/bin/python/home/minty99/tacotron2/inference.py mps 1 4

它有 python 的命令行参数。

我试过这些代码:

string pt_arg = "mps "+ to_string(i) + ""+ to_string(fd[i][1]);

[1] execl("bash", "-c", "/home/minty99/.virtualenvs/venv_waveglow/bin/python/home/minty99/tacotron2/inference.py", pt_arg.c_str( ), 空);

[2] execl("/home/minty99/.virtualenvs/venv_waveglow/bin/python", "/home/minty99/tacotron2/inference.py", pt_arg.c_str(), NULL);

但它不起作用。

First one: exec fails with "No such file or directory"

Second one: /home/minty99/tacotron2/inference.py: can't open file 'mps 1 4': [Errno 2] No such file or directory

我怎样才能正确地做到这一点?

最佳答案

我还没有尝试过,但是阅读了 execl 的联机帮助页,它说

The first argument, by convention, should point to the file name associated with the file being executed.

在哪里

int execl(const char *file, const char arg0, ... /, (char *)0 */);

对我来说,这意味着您的第二个版本应该是这样的

execl("/home/minty99/.virtualenvs/venv_waveglow/bin/python", "python", "/home/minty99/tacotron2/inference.py", pt_arg.c_str(), NULL);

这是有道理的,因为如果您获得 python 中的参数列表,sys.argv[0] 将是“python”,而不是您的第一个参数。

关于python - 如何使用 exec 系统调用使用 C++ 的参数调用 Python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57706495/

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