Skr*_*sli 9 c++ python python-embedding python-c-api boost-python
我有一个动态链接到Python解释器的C++应用程序.我希望能够从特定目录导入python模块.我想修改我的进程的PYTHONPATH,以便sys.path将包含我添加到PYTHONPATH的路径.根据这个文档,这似乎是它的工作方式:
http://docs.python.org/c-api/intro.html#embedding-python
但是,当我从Python-land打印sys.path时,它具有PYTHONPATH的原始内容而不是我设置的内容.这是我正在做的一个例子(使用Boost.Python):
int main(int argc, char* argv[])
{
_putenv_s("PYTHONPATH", "C:\\source\\\\modules");
Py_Initialize();
object main = import("__main__");
object global = (main.attr("__dict__"));
exec("import sys\nprint sys.path"), global, global);
}
Run Code Online (Sandbox Code Playgroud)
PS - 我知道还有其他方法可以实现我的目标,但这不是我所要求的.我想知道为什么Py_Initialize()在设置sys.path时不使用PYTHONPATH的当前值.或许我误解了它应该如何运作?
我找到了跨平台的解决方案.在调用任何其他python代码之前,只需执行以下python行:
import sys
sys.path.append("C:\\source\\\\modules")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7649 次 |
| 最近记录: |