背景
通过源码安装python第三方库时,经常会出现该库依赖的c/c++头文件、库找不到的情况,特别是自己编译安装的c/c++库时。我在安装pytorch中的一个自然语言处理库allennlp库的时候,安装jsonnet依赖库文件的时候,找不到文件pyconfig.h,于是我尝试了以下一些安装的方法。
解决
多数网上说缺少pyconfig.h文件主要是缺少对应的python3-dev,libpython3-dev或者是python3.x-dev、libpython3.x-dev 只要安装对应的库文件即可。笔者这里是python3.7的环境,故而只需要安装
sudo apt install python3.7-dev libpython3.7-dev
这样一般的问题基本上就可以解决。但是笔者并不能解决问题。它一直在说找到’/usr/include/python3.7m/pyconfig.h’文件之后,但是找不到x86_64-linux-gnu/python3.7m/pyconfig.h文件,但是我找到文件的时候,在文件夹’/usr/include/x86_64-linux-gnu/python3.7m/pyconfig.h’找到了该文件,为了能够通过编译,所以我在/usr/include/python3.7m/下新建文件夹/x86_64-linux-gnu/python3.7m/,然后将’/usr/include/x86_64-linux-gnu/python3.7m/pyconfig.h’文件复制到该文件夹下,然后就顺利通过编译,进行安装。
另外可以参考以下的一篇博文
为setup.py添加c:c++ 头文件或者库的搜索路径在文件setup.py中修改extensions中包含的编译文件目录或许也可以解决这个问题,不过笔者并没有尝试。