+ -
当前位置:首页 → 问答吧 → perl的int为什么不识别_

perl的int为什么不识别_

时间:2011-07-26

来源:互联网

python嵌入的问题

大家好:
为了实现c---python互操作,我写了一个py脚本。
在shell下调试,工作正常。
初始化c的程序正常。
我使用的py是3.0的。
但导入from urllib.request import urlopen后,原先的py无法导入了。
请教有什么问题?

文件名PyUtil.py

import sys
from urllib.request import urlopen 有了这个引用后,导入失败


CRLF = '\r\n'

def addValue(oper1,oper2): 只有这个函数的时候,导入是正常的
return (oper1 + oper2);


def ConnectURL(url):
try:
req = urlopen(url)
response = req.read()
req.close()
return (req.getcode(),req.geturl())


except BaseException as exp:
sys.stdout.write(exp)




#ConnectURL("http://www.msn.com.cn")



本地代码如下:

#include "python.h"

BOOL AddValueWrap(PyObject* pPyUtil,int oper1,int oper2,int* nRet)
{
PyObject* pPypfn = NULL;
PyObject* pPyArgs = NULL;
PyObject* pPyRet = NULL;
BOOL bExec = FALSE;
// addValue
pPypfn = PyObject_GetAttrString(pPyUtil,"addValue");
if(pPypfn != NULL)
{
// set oper
pPyArgs = Py_BuildValue("(i,i)",oper1,oper2);
if(pPyArgs != NULL)
{
// exec
pPyRet = PyEval_CallObject(pPypfn,pPyArgs);
if(pPyRet != NULL && pPyRet !=Py_None)
{
// get return data
if(PyArg_ParseTuple(pPyRet,"i",nRet) == 0)
{
bExec = TRUE;
}


Py_DECREF(pPyRet);
}
Py_DECREF(pPyArgs);
}
Py_DECREF(pPypfn);
}
return bExec;
}


int main()
{
PyObject* pPyUtil = NULL;
PyObject* pPypfn = NULL;
PyObject* pPyArgs = NULL;
PyObject* pPyRet = NULL;
int nRet = 0;
int nValue = 0;

Py_Initialize();
PyImport_ImportModule("sys");
PyImport_ImportModule("urllib");
pPyUtil = PyImport_ImportModuleEx("PyUtil",Py_None,Py_None,Py_None); // 导入失败
if(pPyUtil != NULL)
{
AddValueWrap(pPyUtil,20,30,&nValue);

Py_DECREF(pPyUtil);
}
Py_Finalize();
}

作者: febwave   发布时间: 2011-07-26

你的C程序完全编译不通过。

python.h是个啥(是Python.h吧)?BOOL又是个啥?
我的建议是:PyImport_ImportModule("urllib.request"); 如何?

作者: cuihao   发布时间: 2011-07-26