gpt4 book ai didi

python - 痛饮和 python3 : surplus underscore

转载 作者:行者123 更新时间:2023-12-05 00:35:50 28 4
gpt4 key购买 nike

使用 swig 2.0.8 和 python 3.2,运行

swig -python -modern -py3 -o mymodule_wrap.c mymodule.i

生成一个包装文件
#  define SWIG_init    PyInit__mymodule

在那里(注意 PyInit 和 mymodule 之间的两个下划线)。

导入失败
python3 -c "import mymodule"
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: dynamic module does not define init function (PyInit_mymodule)

(注意单下划线)。

手动删除 mymodule_wrap.c 中的下划线并重新编译产生一个工作模块。

在这个问题中: SWIG and Python3 Import Error python 解释器提示找不到 PyInit__module .

怎么了?

最佳答案

确保扩展模块名为 _mymodule.pyd不是 mymodule.pyd .
解释:
给定一个 SWIG .i包含声明的文件:

%module mymodule
SWIG 将生成两个文件:
  • 我的模块.py
  • mymodule_wrap.c
  • mymodule.py通过 import mymodule 导入 Python并加载 _mymodule.pyd . mymodule_wrap.c包含入口点函数 PyInit__mymodule .此源文件必须链接到最终的 _mymodule.pyd .
    Python的 import <module>声明寻找:
  • <module>.pyd带有入口点PyInit_<module> .
  • <module>.py .

  • 对于 SWIG 生成的扩展, import mymodule将加载 mymodule.py ,加载 _mymodule.pyd并正确查找 PyInit__mymodule .
    如果使用了错误的扩展名, import mymodule将加载 mymodule.pyd并错误地查找 PyInit_mymodule .

    关于python - 痛饮和 python3 : surplus underscore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12369131/

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