免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2392 | 回复: 2
打印 上一主题 下一主题

关于C语言中插入python的问题,百度过无法解决于是在这里再问 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-05-10 22:25 |只看该作者 |倒序浏览
本帖最后由 正版电子白菜 于 2016-05-10 22:28 编辑

python版本3.4,C编译器有两个,一个是虚拟机上的linux的GCC,另一个是树莓派上的GCC.
C文件和py文件都放到同一个目录,百度过不要使用test.py这个名字,所以起了个名字叫gpio001.py(实际上跟gpio没有毛关系)
gpio001.py:
def hello():
    print "this is python!"

main.c
#include <stdio.h>
#include <python3.4m/Python.h>
void main(void)
{
    PyObject *pModule;
    PyObject *pFunc;

    printf("test python1\n");

    Py_Initialize();
    PyRun_SimpleString("print('py_string')");                      //这一行成功打印出字符

    PyRun_SimpleString("import sys");
    PyRun_SimpleString("sys.path.append('./')");               //根据网上的经验,设置路径与C文件一样
    pModule = PyImport_ImportModule("gpio001");            //但这里import就失败了
    if (!pModule)
    {
        printf("import python failed!!\n");
    }
    else
    {
        pFunc = PyObject_GetAttrString(pModule, "hello");
        PyEval_CallObject(pFunc, NULL);
    }
    Py_Finalize();
}

以上C,PY代码是放到同一个文件夹里,无论是在虚拟机上编译,还是在树莓派上编译(由于水平有限,无法用交叉编译器在虚拟机上make出一个for 树莓派的python,所以只能直接把代码放在树莓派里用SSH操作编译),都在import上返回0.但PyRun_SimpleString("print('py_string')"); 这句是能打印出字符的.

请问问题究竟出在哪里呢?太纠结了!

论坛徽章:
0
2 [报告]
发表于 2016-05-13 16:46 |只看该作者
难道这里没有人用C调用PYTHON?还是说大家都没遇到这个问题?

论坛徽章:
0
3 [报告]
发表于 2016-05-13 17:48 |只看该作者
我倒,把python3.4删除了,更换成2.7的,就没问题了.这个3.4是不是有点太坑人了?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP