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
...全文
118 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();
}
内容概要:本研究聚焦于永磁同步电机(PMSM)无位置传感器控制技术,提出了一种融合零低速区脉振高频电压注入与中高速区反电动势观测的复合控制策略。该策略通过在零低速区利用脉振高频电压注入法,基于交直轴高频阻抗差异实现转子初始位置的精确辨识与低速稳定运行;在中高速区无缝切换至基于反电动势的观测器,实现对电机转速与位置的连续、高精度估计,从而覆盖电机全速域运行需求。研究重点分析了两种观测方法的融合机制、切换逻辑及系统稳定性,并通过Simulink仿真实验验证了所提策略的有效性与对电机参数变化的鲁棒性。; 适合人群:具备电机控制、电力电子或自动化专业背景,从事电机驱动系统研发的研究生及工程技术人员。; 使用场景及目标:①研究和设计永磁同步电机无位置传感器控制系统;②解决电机在零低速区启动困难和位置观测不准的问题;③提升电机控制系统对参数摄动的适应能力和全速域运行的稳定性。; 阅读建议:此资源以Simulink仿真实现为核心,建议读者在学习时结合理论分析与仿真模型,重点关注高频信号注入的参数设计、反电动势观测器的结构以及两种模式间的平滑切换逻辑,并通过调整参数进行仿真验证,以深入理解其控制机理与鲁棒性。

37,737

社区成员

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

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