Windows 下 gtsam python 编译及报错解决
转自Windows 下 gtsam python 编译及报错解决_gtsam编译报错typeerror: unhashable type: typename-CSDN博客gtsam-py依赖环境版本仅供参考VS版本2015-2026应该都可以boost尽量选尽可能高的不要低于1.70Visual Studio2022cmakecondaboost(1.70-1.90)步骤步骤下载 gtsam 源码没有外部仓库下源码压缩包即可源码链接源码压缩包下载链接解压源码在 conda 终端选择虚拟环境然后执行命令切换到源码路径cd 源码路径执行命令cmake -B build -DGTSAM_BUILD_PYTHONON -DCMAKE_C_FLAGS-D_CRT_NONSTDC_NO_DEPRECATE /GS- -DCMAKE_INSTALL_PREFIXgtsam_install其中GTSAM_BUILD_PYTH 是为了开启 python 支持默认关闭CMAKE_C_FLAGS 设置c编译选项避免后面的一些报错CMAKE_INSTALL_PREFIX 设置安装路径到源码路径/gtsam_installcmake -S . -B build -G Visual Studio 17 2022 -A x64 -DCMAKE_TOOLCHAIN_FILED:/vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_INSTALL_PREFIXgtsam_install -DGTSAM_BUILD_PYTHONON -DGTSAM_BUILD_UNSTABLEOFF -DGTSAM_UNSTABLE_BUILD_PYTHONON -DGTSAM_USE_SYSTEM_PYBINDOFF -DPython3_EXECUTABLEC:/Users/icwei/miniconda3/envs/vggtslam/python.exe -DPython3_ROOT_DIRC:/Users/icwei/miniconda3/envs/vggtslam -DPython3_INCLUDE_DIRC:/Users/icwei/miniconda3/envs/vggtslam/Include -DPython3_LIBRARYC:/Users/icwei/miniconda3/envs/vggtslam/libs/python311.lib -DPython3_FIND_STRATEGYLOCATIONcmake绑定python建议查看type build\CMakeCache.txt | findstr Python重点看类似Python_EXECUTABLEPython3_EXECUTABLE应该是C:/Users/.../miniconda3/envs/vggtslam/python.exe如果不是就重新配置---------------------------------------------------------------------------------• 可以用 Python 3.11并生成gtsam.cp311-win_amd64.pyd当前问题是 GTSAM 的 D:/DeepLearning/gtsam/vcpkg.json 无条件依赖 pybind11而 vcpkg 的 pybind11 又引入 Python 3.12。即使指定 Conda 3.11CMake 仍会混入 vcpkg 的 python312.dll。由于已经使用-DGTSAM_USE_SYSTEM_PYBINDOFFGTSAM 会使用源码自带的 pybind11因此可以从 vcpkg.json 删除这一行pybind11,然后确认 Conda 3.11 文件完整conda activate vggtslampython --versionTest-Path $env:CONDA_PREFIX\Include\Python.hTest-Path $env:CONDA_PREFIX\libs\python311.libTest-Path $env:CONDA_PREFIX\python311.dll应显示 Python 3.11.x 和三个 True。彻底删除原来的 manifest 安装目录Set-Location D:\DeepLearning\gtsamRemove-Item -LiteralPath build -Recurse -Force重新配置(关闭GTSAM_BUILD_UNSTABLE)$PythonRoot $env:CONDA_PREFIX -replace \\,/cmake -S . -B build -G Visual Studio 17 2022 -A x64 -DCMAKE_TOOLCHAIN_FILED:/vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_INSTALL_PREFIXgtsam_install -DCMAKE_CXX_FLAGS/utf-8 -DGTSAM_BUILD_PYTHONON -DGTSAM_BUILD_UNSTABLEOFF -DGTSAM_UNSTABLE_BUILD_PYTHONON -DGTSAM_USE_SYSTEM_PYBINDOFF -DPython3_EXECUTABLE$PythonRoot/python.exe -DPython3_ROOT_DIR$PythonRoot -DPython3_INCLUDE_DIR$PythonRoot/Include -DPython3_LIBRARY$PythonRoot/libs/python311.lib -DPython3_FIND_STRATEGYLOCATION Found Python3: .../vggtslam/python.exefound version 3.11.15found components: Interpreter Development然后编译安装cmake --build build --config Release --target python-install -j 8验证python -c import gtsam; print(gtsam.__file__)python -c from gtsam import SL4, PriorFactorSL4, BetweenFactorSL4; print(OK)关键点是删除 manifest 中的 pybind11 依赖并清空 build否则 vcpkg 的 Python 3.12 仍会继续污染 Python 3.11 的开发库检 测。在源码的 build 目录中双击打开 GTSAM.sln 文件最好选择 Release 编译右键 gtsam 项目点击属性在C/C - 所有选项里找到将警告视为错误设置为否gtsam_unstable 项目同理右键 gtsam_py 项目点击属性在链接器 - 常规 - 附加库目录中添加 python 路径的libs 文件夹比如我的为D:\local\devel\anaconda3\libs 或者C:\Users\xxx\miniconda3\envs\vggtslam\libsgtsam_unstable_py 项目同理右键并生成项目 gtsam_py可能会报错若有源码路径/build/python/gtsam/Release/gtsam_py.pyd拷贝到源码路径/build/python/gtsam/gtsam_py.pyd右键并生成项目 gtsam_unstable_py可能会报错若有源码路径/build/python/gtsam/Release/gtsam_unstable_py.pyd拷贝到源码路径/build/python/gtsam/gtsam_unstable_py.pyd右键并生成项目 python-install 项目会在C:\Users\用户名\AppData\Roaming\Python\Python312文件夹下安装正常会自动识别该路径下的 gtsam一般会自动找到基本不用担心如果用了venv环境请把C:\Users\用户名\AppData\Roaming\Python\Python312\site-packages文件夹里的所有文件拷到虚拟环境的site-packages中如果出现找不到的情况将site-packages文件夹拷到同样版本的 python 路径下的Lib 文件夹中或者在 python 脚本中添加以下代码import sys sys.path.append(C:\Users\用户名\AppData\Roaming\Python\Python312)2. 确认 unstable 已关闭 Select-String -Path D:\DeepLearning\gtsam\build\CMakeCache.txt -Pattern GTSAM_BUILD_UNSTABLE 应显示 GTSAM_BUILD_UNSTABLE:BOOLOFF 3. 只构建正式 Python 模块 cmake --build D:\DeepLearning\gtsam\build --config Release --target gtsam_py 4. 卸载之前装在用户目录中的版本 C:\Users\icwei\miniconda3\envs\vggtslam\python.exe -m pip uninstall -y gtsam C:\Users\icwei\miniconda3\envs\vggtslam\python.exe -m pip install --no-user --no-deps --force-reinstall D:\DeepLearning\gtsam\build\python 6. 验证安装位置 C:\Users\icwei\miniconda3\envs\vggtslam\python.exe -c import sys,gtsam; print(sys.executable); print(gtsam.__file__) 正确结果应类似 C:\Users\icwei\miniconda3\envs\vggtslam\python.exe C:\Users\icwei\miniconda3\envs\vggtslam\Lib\site-packages\gtsam\__init__.py其他错误1、如果编译报错常量中有换行符那么说明有特殊字符把文件源码路径\wrap\pybind11\include\pybind11\stl_bind.h中第 713 行的代码改成return str(message[slice(0, cut_length, 1)]) str(xxx)特殊字符替换为 xxx2、如果报错无法解析的外部符号 “void __cdecl boost::throw_exception(class std::exception const )”在对应项目的C/C - 命令行中添加/EHscgtsam_py 与 gtsam_unstable_py 项目python-install 完整输出从以下输出里可以看出已经 gtsam python 安装到了C:\Users\azh03\AppData\Roaming\Python\Python3125------ 已启动生成: 项目: python-install, 配置: Debug x64 ------ 51 5DEPRECATION: Loading egg at d:\local\devel\anaconda3\lib\site-packages\scons-4.8.1-py3.12.egg is deprecated. pip 24.3 will enforce this behaviour change. A possible replacement is to use pip for package installation.. Discussion can be found at https://github.com/pypa/pip/issues/12330 5Processing d:\users\azh\desktop\gtsam-develop\build\python 5 Preparing metadata (setup.py): started 5 Preparing metadata (setup.py): finished with status done 5Requirement already satisfied: numpy1.11.0 in d:\local\devel\anaconda3\lib\site-packages (from gtsam4.3a1) (1.26.4) 5Collecting pytest9.0.1 (from gtsam4.3a1) 5 Downloading pytest-9.0.2-py3-none-any.whl.metadata (7.6 kB) 5Requirement already satisfied: colorama0.4 in d:\local\devel\anaconda3\lib\site-packages (from pytest9.0.1-gtsam4.3a1) (0.4.6) 5Requirement already satisfied: iniconfig1.0.1 in d:\local\devel\anaconda3\lib\site-packages (from pytest9.0.1-gtsam4.3a1) (1.1.1) 5Requirement already satisfied: packaging22 in d:\local\devel\anaconda3\lib\site-packages (from pytest9.0.1-gtsam4.3a1) (23.2) 5Collecting pluggy2,1.5 (from pytest9.0.1-gtsam4.3a1) 5 Downloading pluggy-1.6.0-py3-none-any.whl.metadata (4.8 kB) 5Requirement already satisfied: pygments2.7.2 in d:\local\devel\anaconda3\lib\site-packages (from pytest9.0.1-gtsam4.3a1) (2.15.1) 5Downloading pytest-9.0.2-py3-none-any.whl (374 kB) 5 --------------------------------------- 374.8/374.8 kB 27.8 kB/s eta 0:00:00 5Downloading pluggy-1.6.0-py3-none-any.whl (20 kB) 5Building wheels for collected packages: gtsam 5 Building wheel for gtsam (setup.py): started 5 Building wheel for gtsam (setup.py): finished with status done 5 Created wheel for gtsam: filenamegtsam-4.3a1-cp312-cp312-win_amd64.whl size80499728 sha256f9e6b5c604e28e14e8d0bfe8c0b8563fc0502dccb217c17f07d6ec107f2977f4 5 Stored in directory: C:\Users\azh03\AppData\Local\Temp\pip-ephem-wheel-cache-qdfawjqj\wheels\2b\37\ed\1a27eed30b413a1c4adf86db3577b4ae90725533fa7771ccdc 5Successfully built gtsam 5Installing collected packages: pluggy, pytest, gtsam 5CUSTOMBUILD : warning : The scripts py.test.exe and pytest.exe are installed in C:\Users\azh03\AppData\Roaming\Python\Python312\Scripts which is not on PATH. 5 Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location. 5Successfully installed gtsam-4.3a1 pluggy-1.6.0 pytest-9.0.2 5Building Custom Rule D:/Users/azh/Desktop/gtsam-develop/python/CMakeLists.txt

相关新闻

vmware关掉上面条条

vmware关掉上面条条

View->Exclusive Mode Enter Exclusive mode? To leave Exclusive mode, press the CtrlAlt key combination.

2026/8/1 0:21:33 阅读更多 →
什么是域名委托购买?有哪些注意事项?

什么是域名委托购买?有哪些注意事项?

一、什么是域名委托购买?域名委托购买是指您向专业的域名代购公司委托购买特定的域名。这种服务通常是针对那些希望购买高价值域名的客户,因为这些域名可能需要通过复杂的交易过程才能得到。二、域名委托购买常见问题1、为什么要选择域名委托购买&#x…

2026/7/30 10:54:55 阅读更多 →
微软官方Windows优化工具全指南

微软官方Windows优化工具全指南

1. 微软官方工具的价值与定位 Windows系统长期使用后出现卡顿是个老生常谈的问题,但很多人不知道微软其实提供了一系列官方优化工具。这些工具通常体积小巧(200MB左右)、完全免费且无第三方软件的兼容性风险。不同于市面上那些"一键加速…

2026/7/29 16:52:44 阅读更多 →

最新新闻

5大核心功能解密:MZmine如何让质谱数据分析变得简单又专业

5大核心功能解密:MZmine如何让质谱数据分析变得简单又专业

5大核心功能解密:MZmine如何让质谱数据分析变得简单又专业 【免费下载链接】mzmine3 mzmine source code repository 项目地址: https://gitcode.com/gh_mirrors/mz/mzmine3 你是否曾经面对海量的质谱数据感到无从下手?是否厌倦了昂贵的商业软件许…

2026/8/1 0:20:56 阅读更多 →
如何用开源工具解锁Wand-Enhancer,实现WeMod功能增强与效率提升?

如何用开源工具解锁Wand-Enhancer,实现WeMod功能增强与效率提升?

如何用开源工具解锁Wand-Enhancer,实现WeMod功能增强与效率提升? 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer 你是否曾经…

2026/8/1 0:20:55 阅读更多 →
抖音内容管理神器:一键批量下载无水印视频的终极解决方案

抖音内容管理神器:一键批量下载无水印视频的终极解决方案

抖音内容管理神器:一键批量下载无水印视频的终极解决方案 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback su…

2026/8/1 0:20:55 阅读更多 →
Agent技术的现在与未来:从学术前沿到商业落地的距离判断

Agent技术的现在与未来:从学术前沿到商业落地的距离判断

Agent技术的现在与未来:从学术前沿到商业落地的距离判断 做AI创业这一年,我花了不少时间跟踪Agent相关的论文和开源项目。从ReAct到Toolformer,从LangChain到AutoGen,学术界和工程界都在快速迭代。但说实话,从一篇论文…

2026/8/1 0:20:55 阅读更多 →
技术创业者的7月收官思考:关于勇气、耐心与长期主义

技术创业者的7月收官思考:关于勇气、耐心与长期主义

技术创业者的7月收官思考:关于勇气、耐心与长期主义 一、7月收官为什么需要深度思考 技术创业是一场与时间的博弈。每个月的月底,都是一个天然的反思节点。7月是创业的第一个完整季度结束后的第一个月。第一季度的数据已经足够画出趋势线,但…

2026/8/1 0:20:55 阅读更多 →
CompressO终极指南:如何免费将视频图片压缩90%而不损失质量

CompressO终极指南:如何免费将视频图片压缩90%而不损失质量

CompressO终极指南:如何免费将视频图片压缩90%而不损失质量 【免费下载链接】compressO Convert any video/image into a tiny size. 100% free & open-source. Available for Mac, Windows & Linux. 项目地址: https://gitcode.com/gh_mirrors/co/compre…

2026/8/1 0:19:55 阅读更多 →

日新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/31 1:03:03 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/31 4:19:39 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →