文章目录

  • 前言
  • 一、前期准备
  • 二、大致步骤
  • 坑一:关于解释器的问题
  • 坑二:关于pybind11
  • 写在后面

前言

最近需要使用NGT包,链接: 参考博客,这篇博客对NGT包做了简介,其主要内容翻译自源码的自述文件。其中也附带了下载地址,此处不多赘述了。
NGT是使用C++编写的,如果要用Python调用有些麻烦。
主要是以下几步:
1.CMake生成(需要CMake,gcc)
2.生成Python可执行的文件(需要pybind11)

一、前期准备

我的系统:Ubuntu
我的环境:python 3.6.2
特别注意:需要提前安装好
1.CMake(链接: 安装CMake);
2.gcc(链接: 安装gcc)
3.pybind11(仅用pip安装是不够的,因为从C++程序包含了他的头文件,所以需要C++的pybind11,链接: 安装pybind11)

二、大致步骤

详细在附带链接中已经有介绍,博主再多说几句:
第一步,CMake,下面语句执行后,会在新建的build文件夹中生成一堆东西,下面是自述文件中的语句。

第二步,如果需要Python调用,进入python文件夹,看到自述文件如下图:
首先,亲测pip3 install ngt无效,找不到
然后,采用下面的方案,即从C++生成python可执行文件,详见下文

坑一:关于解释器的问题

python文件夹下的setup.py,自述文件中告诉我们直接使用python3 setup.py sdist,这句话是将C++打包成一个ngt-x.x.x.tar.gz文件,便于以后安装。
那么坑在哪里呢?博主想把这个包安装在自己的环境里,所以一直在想要安装的环境中操作,总是失败,点开后发现,有这一句

#!/usr/bin/env python

这一句是要在默认目录下寻找解释器,然而我的环境并不在这目录下,所以以上操作均需要在base环境运行,不过没关系,只要生成了可执行文件,后面就好办。

坑二:关于pybind11

准备好了CMake,gcc,在base环境下运行总行了吧,还不够!!!
自述文件说直接用pip3 install pybind11,这个很快成功,
一直到 pip3 install dist/ngt-1.12.2.tar.gz,(图中红色画笔部分)
出现了两个错误(图中蓝色画笔(这个问题重装了一下gcc得到解决,详见本文前面链接),以及绿色画笔)
绿色画笔部分的错误就是因为C++在打包时缺了pybind11头文件,所以无法打包,需要安装,这里再放一次安装教程链接: 安装pybind11

安装pybind11完成如下:
这时候再 pip3 install dist/ngt-1.12.2.tar.gz,就可以成功了

当然,这是安装在base下,我还是想安装在自己的环境,直接执行就可以了

写在后面

NGT包本身并不复杂,只是这个包比较小众,相关博客不多且语焉不详。
源码作者的自述文件是没问题的,只是对小白不太友好。
博主缺乏经验,这次也是了解了一个完整的打包安装过程,所以做一下笔记,以后在遇到类似的问题可以参照解决,本文若有不足之处还请见谅。

安装ngtpy踩坑记录(C++打包Python的一些小坑)相关推荐

  1. Python wxpython篇 | Python生态库之图形用户界面开发库 “wxPython “ 的安装及使用(附. 使用pyinstaller 库打包Python随机点名小程序程序.exe文件)

    全文目录 wxPython 图形用户界面 PyCharm 中安装 wxPython库 PyCharm中将程序打包成 .exe 可执行文件 wxPython 的使用 第一个wxPython 程序 自定义 ...

  2. python初学的小坑

    初学python,发现一点小坑,我写了个pyhon脚本,一运行,结果报错:import: unable to open X server `' @ error/import.c/ImportImage ...

  3. 记录pyinstaller打包过程中遇到的坑

    打包的过程主要参考PyInstaller打包详解 多线程bug build过程不报错,运行exe之后弹出空的命令行窗口,调出任务管理器发现main.exe在不停的启动进程. 查阅pyinstaller ...

  4. 记录第一个 python项目 外星人入侵小游戏

    学习目标:提升自己的编程能力## 标题 *> 可谓是一波三折 ,刚开始看的一本电子书 里面是python2.0的内容,我敲着在3系列的编译器试着2.0的代码可谓好不酸爽 那报错 绝了 学习内容: ...

  5. 服务器部署服务采坑记录(不断更新)

    目前在服务器上部署服务遇到的问题 1.在新的服务器上部署环境和服务 1.1在新的服务器上部署环境 之前的服务器上放的程序太多,需要在新的服务器上部署,这次把之前踩过的坑记录一下以免后续还要重新采坑. ...

  6. 部署mmdetection3d到服务器_采坑记录

    部署mmdetection3d到服务器_采坑记录 部署mmdetection3d到服务器_采坑记录 前提 步骤 验证 补充 后记 部署mmdetection3d到服务器_采坑记录 最近刚刚开通了学校的 ...

  7. Zuul Filter的小坑

    Zuul是Spring Cloud技术栈里对外网关的实现. 所有的服务从这里对外暴露,鉴权.加密.压缩.缓存等等等等,各类需求可以在这里一次编码.彻底解决,方便极了. 但是这里又是所有服务的入口,一夫 ...

  8. Python打包工具Pyintealler打包py文件为windows exe文件过程及踩坑记录+实战例子

    Python打包工具Pyintealler打包py文件为windows exe文件过程及踩坑记录+实战例子 目录 Python打包工具Pyintealler打包py文件为windows exe文件过程 ...

  9. python打包exe之打包深度学习模型踩坑记录及其解决办法。

    在现实生活中,有时候我们写的程序需要发给小伙伴用,而小伙伴没有python,这时候我们需要将程序打包成exe文件发给小伙伴用. 今天讲下打包深度学习模型 打包一般要用到cmd命令行,要求cmd能执行p ...

最新文章

  1. MFC里ON_COMMAND_RANGE消息映射的ID问题
  2. coursera 《现代操作系统》 -- 第十一周 IO系统
  3. 小学五年级计算机备考方案,小学五年级备考方案(2)
  4. java全能速查宝典.chm_Java API 快速速查宝典
  5. YARN的内存和CPU配置优化
  6. hdu3342 拓扑序
  7. 数学对于编程来说重要吗?编程大佬眼里的线性代数
  8. 如何掌握openGauss数据库核心技术?秘诀一:拿捏SQL引擎(3)
  9. Mysql学习总结(38)——21条MySql性能优化经验
  10. H265框架编码流程(一)
  11. 使用Entity Framework时遇到的问题
  12. C. Memory and De-Evolution 逆向思维
  13. Navicat - 导入CSV注意事项
  14. linux内核C -- 第07课:地址对齐那些事儿
  15. 北理珠计算机与科学就业去向,2019届我国大学毕业生就业情况:计算机类专业领跑薪酬榜...
  16. 【12c】新特性:Oracle 12c Temporal Validity 时间有效性
  17. 英语黑色幽默IT段子
  18. 共享软件作者怎样才能月入万
  19. Elasticsearch中的倒排索引和读写操作原理解析
  20. 【校招内推】字节跳动2022提前批开启

热门文章

  1. PingCAP DevCon 2021 万字长文回顾:预见数据技术的未来生态
  2. 平行链启动在即,波卡DeFi价值与风险并存
  3. PTA——求奇数分之一序列前N项和
  4. 【HDU4741】空间解析几何
  5. Enlight Software Ltd.官方正式推出〔金融帝国实验室试玩版本〕(Capitalism Lab Demo Version)
  6. OPPO造车,只差官宣?
  7. 如何在MCU中使用二进制库(动态库)
  8. 斯阔谷冬奥会首次使用计算机,冬奥会历史:第八届美国斯阔谷冬奥会
  9. Echarts饼图 配置、样式详解 二、 图形中间文字、 图形旁边文字上下显示等
  10. echarts饼图里添加formatter数据的方法