资讯专栏INFORMATION COLUMN

为setup.py添加c/c++ 头文件或者库的搜索路径

shleyZ / 2542人阅读

摘要:背景通过源码安装第三方库时,经常会出现该库依赖的头文件库找不到的情况,特别是自己编译安装的库时。

背景

通过源码安装python第三方库时,经常会出现该库依赖的c/c++头文件、库找不到的情况,特别是自己编译安装的c/c++库时。比如leveldb,mysql等等。我今天安装leveldb的python库时,就遇到了这个情况。

解决:

通过setup.py的错误,定位到出错的setup.py代码行,如下:

    ext_modules = [
        Extension(
            "plyvel._plyvel",
            sources=["plyvel/_plyvel.cpp", "plyvel/comparator.cpp"],
            libraries=["leveldb"],
            extra_compile_args=["-Wall", "-g"]
        )   
    ]

通过上网查询,得知,setup.py的ext_modules参数的详细解释,所以,只用在Extension中加上两个参数,加完后:

    ext_modules = [
        Extension(
            "plyvel._plyvel",
            sources=["plyvel/_plyvel.cpp", "plyvel/comparator.cpp"],
            libraries=["leveldb"],
            extra_compile_args=["-Wall", "-g"],
            include_dirs = ["/Users/simon/Downloads/leveldb-1.15.0/include"],
            library_dirs = ["/Users/simon/Downloads/leveldb-1.15.0"]
        )   
    ]

include_dirs指定了搜索的头文件路径,library_dirs指定了搜索的动态库或者静态库的路径

后记

以前经常遇到,现在解决了,留个学习笔记,方便自己以后查看

setup.py参数详解:http://blog.csdn.net/yiliumu/article/details/30841377

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/45351.html

相关文章

  • C++开发python windows版本的扩展模块示例

    摘要:主要是库文件头文件文件不一致的问题。定义模块函数其中函数参数是模块自身,是传递的参数列表,返回值定义了一个整形数,这里会申请空间增加引用计数,交由来管理这个引用。 C++开发python windows版本的扩展模块示例测试环境介绍和准备测试环境:操作系统:windows10Python版本:3.7.0VS版本:vs2015社区版(免费)相关工具下载:VS版本vs2015社区版(免费)...

    junfeng777 评论0 收藏0
  • C++开发python windows版本的扩展模块示例

    摘要:主要是库文件头文件文件不一致的问题。定义模块函数其中函数参数是模块自身,是传递的参数列表,返回值定义了一个整形数,这里会申请空间增加引用计数,交由来管理这个引用。 C++开发python windows版本的扩展模块示例测试环境介绍和准备测试环境:操作系统:windows10Python版本:3.7.0VS版本:vs2015社区版(免费)相关工具下载:VS版本vs2015社区版(免费)...

    Meathill 评论0 收藏0
  • Python的C/C++扩展——用SWIG封装C++Python模块

    摘要:所以,最大的好处就是将脚本语言的开发效率和的运行效率有机的结合起来。前面的文章提到一个实现的双数组的实现,它在中文分词新词发现等算法中的应用。本文以的封装实现来说明的使用。编译生成动态库编译生成的使用的,可以参考的编写。 如果觉得文章对你有帮助,你也可以访问老猿的个人博客https://www.yuanrenxue.com/ Python调用C/C++代码的利器除了boost_pyt...

    邹强 评论0 收藏0
  • 使用C/C++编写Python模块扩展

    摘要:起步由于在底层运算中会对每个运算做类型检查这就影响了运行的性能,而利用扩展可以避免这样的情况获得优越的执行性能,利用提供的,如宏,类型,函数等来编写扩展。测试更多关于模块扩展内容 起步 由于python在底层运算中会对每个运算做类型检查, 这就影响了运行的性能,而利用扩展, 可以避免这样的情况, 获得优越的执行性能,利用Python提供的C API,如宏,类型,函数等来编写扩展。 前期...

    Aklman 评论0 收藏0

发表评论

0条评论

shleyZ

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<