gpt4 book ai didi

c++ - 在 C++ 中从 PATH 导入 Python 脚本

转载 作者:行者123 更新时间:2023-11-30 04:16:57 26 4
gpt4 key购买 nike

我正在尝试使用 Python.h 在 C++ 程序中运行 Python 脚本。因为这个 C++ 程序可以安装 (make install) 在 /usr/bin 中,所以它需要能够在它自己的目录中找到 Python 脚本(以防它未安装)或在 PATH 环境变量的目录之一中。

我试过:

PyObject *pName = PyString_FromString(scriptName); // scriptName is "file.py" as a char*
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append(\".\")");
PyObject *pModule = PyImport_Import(name); // not working because absolute path only
//since Python 2.7 ?

PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append(\".\")");
PyObject *pModule = PyImport_ImportModuleEx(scriptName, NULL, NULL, NULL);

但是在这个调用之后两者都给我留下了 pModule == NULL 但是如果我从它自己的目录运行 C++ 模块就可以工作。

非常感谢您的帮助

最佳答案

"." 仅当您的 C++ python 脚本的根目录时才用作您的 python 脚本的路径是您进程的当前工作目录

如果您的程序是从其他地方启动的(通过 PATH 或/path/to/a/program)那么找到脚本的唯一可靠方法是使用 main 中的 argv[0] 参数。

找到正确的路径后,有两种使用方法:

  1. 将其传递给 sys.path.append
  2. 使用chdir(来自unistd.h)切换工作目录,然后您可以将"."传递给 sys.path.append. chdir 会影响整个过程,但优点是您可以直接在 main 中执行。

关于c++ - 在 C++ 中从 PATH 导入 Python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17430462/

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