【问题标题】:How do I import a .pyd module written in C++ to Python using PyBind11如何使用 PyBind11 将用 C++ 编写的 .pyd 模块导入 Python
【发布时间】:2023-02-26 19:49:41
【问题描述】:

我正在使用 Python 3.9.7 在 Windows 10 上工作,并在我的笔记本电脑上安装了 anaconda。 我已经编译了一个 C++ 代码calcSim.cpp,其中模块名称是calJaccSimm,并且能够成功生成具有以下扩展名的 .pyd 文件.cp39-win_amd64.pydhere所述。

我在以下位置启动我的 jupyter notebook:jupyter-notebookD:\projects\sem4\code我的 .pyd 名为 calcSim.cp39-win_amd64.pyd 的文件位于同一位置。

尝试使用以下方式导入模块时:

import calJaccSimm 我收到ModuleNotFoundError

我尝试了以下内容:

  1. import sys

    sys.path.insert(0, 'D:\projects\sem4\code')

  2. import os

    os.dll_directory("D:\projects\sem4\code")

  3. 使用路径 '"D:\projects\sem4\code"' 设置环境变量

  4. 尝试将生成的 .pyd 放在不同的位置,如 anaconda\DLLs 和 anaconda\lib\site-packages 文件夹。

    但毕竟,我仍然无法加载模块。请帮忙。

    编辑 1:我的机器上有多个版本的 python。我删除了所有版本并重新安装了 anaconda。仍然面临同样的问题。

【问题讨论】:

    标签: python windows-10 python-3.9 pybind11


    【解决方案1】:

    模块名有三个地方需要保持一致:调用PYBIND11_MODULE宏时,扩展的文件名中,python里面的import语句中。

    您的 pyd 文件似乎不一致地命名为 calcSim 而不是 calcJaccSimm

    【讨论】:

    • 多谢。我之前也尝试过同样的事情,但由于多个 python 版本问题,它没有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-14
    • 2020-11-24
    • 1970-01-01
    • 1970-01-01
    • 2019-12-27
    相关资源
    最近更新 更多