繁体   English   中英

从C ++中的PATH导入Python脚本

[英]Python script import from PATH in C++

我正在尝试使用Python.h在C ++程序中运行Python脚本。 因为此C ++程序可以make install/usr/binmake install ),所以它需要能够在其自己的目录(如果未安装)或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 ++模块,它们会起作用。

非常感谢你的帮助

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

如果你的程序从别的地方开始(通过PATH或/路径/到/ A /程序),那么唯一可靠的方式找到你的脚本是用用你argv[0] PARAM从main

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM