Python导入包装问题

2024-10-01 09:40:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我在我的c文件blargUtils.c中定义了包装器对象的名称,如下所示(我在Blargmethods中定义了方法及其批次)。。。在

void initBlarg(){
    Py_InitModule("Blarg", Blargmethods);
}

我是这样编辑的。。。在

^{pr2}$

但是,当我试图在python脚本中导入包装器时。。。在

import Blarg

上面写着:“ImportError:没有名为Blarg的模块”。我有点迷路了,我不明白为什么它找不到这个类,因为它们的拼写完全相同。也许是逻辑错误?在

如果需要更多代码,请告诉我。在


Tags: 文件对象方法py脚本名称编辑定义
1条回答
网友
1楼 · 发布于 2024-10-01 09:40:17

首先,从评论来看,我发现改名没用。这意味着(1)python找不到.so文件,(2)该.so文件不可用(即未正确编译或未找到所有必需的符号),或(3)在同一目录中有一个.py/.pyc/.pyo文件,该文件已具有该名称。如果你有布拉格·皮伊已经定义好了,python将首先查看这个文件。如果您在相同的目录中有一个名为Blarg的搜索路径,则该目录名为Blarg。所以,与其把头撞在墙上,不如试试这个:

1)将您的.so库重命名为保证不会发生冲突的内容(即\u Blarg)

void initBlarg() {
    Py_InitModule("_Blarg", Blargmethods);
}

2)同名编译

^{pr2}$

3)创建一个python包装器(即。布拉格·皮伊)在

import sys
sys.path.append('/path/to/your/library')

import _Blarg

def blargFunc1(*args):
    """Wrap blargFunc1"""
    return _Blarg.blargFunc1(*args)

4)现在正常使用即可

import Blarg
Blarg.blargFunc1(1, 2, 3)

显然这有点过头了,但它可以帮助您确定问题所在。希望这有帮助。在

相关问题 更多 >