1

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

我试过做:

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++ 模块,它们就可以工作。

非常感谢你的帮助

4

1 回答 1

2

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

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

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

  1. 把它传给sys.path.append
  2. 使用(来自 unistd.h)切换工作目录chdir,然后您可以传递"."sys.path.append. 这chdir将影响整个过程,但优点是您可以直接在main.
于 2013-07-05T21:30:38.860 回答