You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何导入PyBind11编译的.pyd模块?遇ModuleNotFoundError求助

解决Windows 10 Anaconda环境下导入.pyd模块的ModuleNotFoundError问题
  • 验证.pyd文件与环境的兼容性

    • 确认Anaconda环境的Python版本与编译.pyd时的版本完全一致:在Jupyter中执行import sys; print(sys.version),检查是否为3.9.7。小版本不匹配会直接导致模块无法识别。
    • 验证架构匹配:执行import platform; print(platform.architecture()),确认输出为('64bit', 'WindowsPE'),与.pyd文件名中的win_amd64对应。
    • 检查文件名拼写:确保.pyd文件名是calJaccSimm.cp39-win_amd64.pyd,导入语句import calJaccSimm的拼写完全一致(Windows下文件名大小写不敏感,但Python导入可能存在严格匹配情况)。
  • 确认Jupyter的工作路径与模块路径一致

    • 打印当前工作目录:import os; print(os.getcwd()),如果输出不是D:\projects\sem4\code,执行os.chdir(r"D:\projects\sem4\code")切换路径后再尝试导入。
    • 检查模块路径是否在sys.path中:执行import sys; print(sys.path),如果目标路径不在列表中,手动添加:sys.path.append(r"D:\projects\sem4\code")。
  • 排查.pyd文件的依赖缺失

    • .pyd本质是DLL文件,可能依赖第三方库或VC++运行时。使用VS开发者命令提示符执行dumpbin /dependents calJaccSimm.cp39-win_amd64.pyd,查看是否有缺失的DLL。
    • 若缺失VC运行库,安装对应版本的Visual C Redistributable(Python 3.9通常适配VS2019 x64版本)。
  • 排除Jupyter Kernel的环境不匹配问题

    • 在Jupyter中执行import sys; print(sys.executable),确认路径指向Anaconda环境的Python.exe(例如D:\Anaconda3\envs\your_env\python.exe)。
    • 若路径不符,激活Anaconda环境后重新安装kernel:
      conda install ipykernel
      python -m ipykernel install --user --name your_env_name --display-name "Python (your_env_name)"
      
      重启Jupyter后选择对应kernel再测试。
  • 检查文件权限

    • 右键.pyd文件→属性→安全,确认当前用户拥有读取和执行权限,避免因权限不足导致模块无法加载。
  • 重新编译.pyd文件

    • 确保编译时使用Anaconda环境的Python头文件与库:激活目标环境后,通过setup.py重新编译:
      python setup.py build_ext --inplace
      
      这样生成的.pyd会与当前Anaconda环境完全兼容。

内容的提问来源于stack exchange,提问作者tushaR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 04:55:02