gpt4 book ai didi

python - python中动态模块的init函数是什么?

转载 作者:太空狗 更新时间:2023-10-30 01:29:31 24 4
gpt4 key购买 nike

我在其他两个问题中遇到了同样的错误: ImportError: dynamic module does not define init function, but it doesCython compiled C extension: ImportError: dynamic module does not define init function

但他们的解决方案并不相同,对我也不起作用。

我正在尝试在我的 python 程序中调用我用 c 编写的共享库的函数。

我这样编译我的共享库:

gcc -shared -Wl,-soname,playfaircrack.so -o playfaircrack.so -fPIC playfaircrack.c scoreText.o

我创建了一个模块,并在这个模块中加载了这个库:

cracker = ctypes.cdll.LoadLibrary('./playfaircrack.so')

但是当我运行代码时,出现以下错误:

Traceback (most recent call last):
File "playfair.py", line 2, in <module>
import playfaircrack
ImportError: dynamic module does not define init function (initplayfaircrack)

这很奇怪,因为如果我运行 python 解释器,并直接调用:

cracker = ctypes.cdll.LoadLibrary('./playfaircrack.so')

我可以访问我的共享库的功能。

有什么解决办法吗?谢谢。

最佳答案

删除行

import playfaircrack

playfair.py 中,它应该可以工作。

或者,将 playfaircrack.so 重命名为其他名称或将其移动到其他目录。如果你有两个具有相同模块名称的文件,Python 会感到困惑,即playfaircrack.pyplayfaircrack.so在同一目录下。 Python 在到达 playfaircrack.py 之前尝试导入 playfaircrack.so,这不是有效的 Python 模块。

关于python - python中动态模块的init函数是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16908820/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com