Cython:从同一个.so库中的不同.py导入

2024-09-28 17:20:45 发布

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

我编译了一堆.py文件,并将它们链接到一个.so文件中

在mymod1中,我使用

from .mymod2 import method2

用于从另一个文件导入方法,我使用了这些方法,而且效果很好

当我导入.so时,再次使用python,一切都正常: main.py:

from mylib.mymod1 import method1
x = method1()
print(x)

它起作用了,小菜一碟


现在我想从C程序中调用method1。我使用以下代码向库中添加了bridge.pyx

from mymod1 import method1
cdef public void call_method():
    method1()

我在我的主体中是这样使用的。c:

#include <Python.h>
#include "bridge.h"

int main(){
    PyImport_AppendInittab("bridge", PyInit_bridge);
    Py_Initialize();
    PyImport_ImportModule("bridge");
    call_method();
    Py_Finalize();
    return 0;
}

我得到以下信息:

Traceback (most recent call last):
  File "pysrc/bridge.pyx", line 1, in init pysrc.bridge
ImportError: attempted relative import with no known parent package
Exception ignored in: 'pysrc.bridge.call_method'
Traceback (most recent call last):
  File "pysrc/bridge.pyx", line 1, in init pysrc.bridge
ImportError: attempted relative import with no known parent package

我怎样才能克服这个问题


Tags: 文件方法infrompyimportsomain