C 调用 python的问题

xycode 2012-08-26 08:11:22

int main(int argc, char *argv[])
{

Py_Initialize();
PyObject* pName = PyString_FromString("script//main");
PyObject* pModule = PyImport_Import(pName);
if ( !pModule )
{
MessageBox(NULL, L"找不到main.py", L"提示", MB_OK);
return 1;
}
PyObject* pDict = PyModule_GetDict(pModule);
PyObject* pFunc = PyDict_GetItemString(pDict, "test");
PyObject_CallObject(pFunc, NULL);
Py_Finalize();
}


如代码所示, PyString_FromString(path);
程序和脚本同一个目录, 运行可以找得到, 如果我把脚本放在其他目录下面, 用绝对路径, 或者相对路径, 都找不到了
请问, 如何能够指定某个路径的脚本?

|--目录
|-- 程序.exe #调用目录下的main.py
|-- 脚本目录
|--main.py
...全文
74 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xycode 2012-08-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

你的路径用错了,
如果使用windows风格,那么是类似:
"C:\\Users\\Map\\temp\\test.py" (相对路径 .\\temp\\test.py)
Linux、Unix风格,相对路径"./temp/test.py"
[/Quote]

哈哈, 我知道了, 这个路径, 就应该是和python 的import 一样的写法。
import script.main

这样才有效。当然, script目录需要有__init__.py文件。 谢谢你的热情提醒了我。
xycode 2012-08-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

你的路径用错了,
如果使用windows风格,那么是类似:
"C:\\Users\\Map\\temp\\test.py" (相对路径 .\\temp\\test.py)
Linux、Unix风格,相对路径"./temp/test.py"
[/Quote]

还是不行, 什么风格都试过了。 还是提示找不到, 而且我是静态编译的pythoncore 会不会找不到sys模块?
因为这样是不会有任何提示的
Gloveing 2012-08-26
  • 打赏
  • 举报
回复
你的路径用错了,
如果使用windows风格,那么是类似:
"C:\\Users\\Map\\temp\\test.py" (相对路径 .\\temp\\test.py)
Linux、Unix风格,相对路径"./temp/test.py"
Gloveing 2012-08-26
  • 打赏
  • 举报
回复
PyObject* pName = PyString_FromString("script//main");
-》
PyObject* pName = PyString_FromString("script/main");
Gloveing 2012-08-26
  • 打赏
  • 举报
回复
加2句:
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append('./')");
试试?
int main(int argc, char *argv[])
{
Py_Initialize();

PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append('./')");
PyObject* pName = PyString_FromString("script//main");
PyObject* pModule = PyImport_Import(pName);
if ( !pModule )
{
MessageBox(NULL, L"找不到main.py", L"提示", MB_OK);
return 1;
}
PyObject* pDict = PyModule_GetDict(pModule);
PyObject* pFunc = PyDict_GetItemString(pDict, "test");
PyObject_CallObject(pFunc, NULL);
Py_Finalize();
}

37,721

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧