首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用cmake连接Python3库?

如何使用cmake连接Python3库?
EN

Stack Overflow用户
提问于 2015-03-25 08:39:27
回答 3查看 18.5K关注 0票数 10

我已经通过brew install python3安装了Python3。但是,cmake找不到PythonLibs 3。这是我的CMakeLists.txt的头。

代码语言:javascript
复制
cmake_minimum_required(VERSION 3.0)
find_package(PythonLibs 3 REQUIRED)

当我运行cmake时,我得到了这个错误消息

代码语言:javascript
复制
Could NOT find PythonLibs: Found unsuitable version "2.7.6", but required is at least "3" (found /usr/lib/libpython2.7.dylib)

不知道我做错了什么。

EN

回答 3

Stack Overflow用户

发布于 2016-02-22 23:27:10

根据我的经验,这是因为我使用的是一个老版本的cmake (2.8而不是3+),它不知道Python3.4(在3.3之后放弃了)。

解决方案是进入CMakeLists.txt文件并在find_package上添加“附加版本”指令:

set(Python_ADDITIONAL_VERSIONS 3.4) find_package(PythonLibs 3 REQUIRED)

你也可以通过升级你的cmake版本来修复它。但上面的方法适用于我的cmake 2.8

票数 6
EN

Stack Overflow用户

发布于 2020-04-04 16:23:16

因为您使用的是CMake >= 3.0,所以您可以find_package(Python COMPONENTS Interpreter Development)查看:https://cmake.org/cmake/help/v3.12/module/FindPython.html

例如,这将为您提供:

代码语言:javascript
复制
find_package(Python COMPONENTS Interpreter Development)

message("Python_FOUND:${Python_FOUND}")
message("Python_VERSION:${Python_VERSION}")
message("Python_Development_FOUND:${Python_Development_FOUND}")
message("Python_LIBRARIES:${Python_LIBRARIES}")

结果:

代码语言:javascript
复制
Python_FOUND:TRUE
Python_VERSION:3.8.0
Python_Development_FOUND:TRUE
Python_LIBRARIES:/usr/lib/x86_64-linux-gnu/libpython3.8.so
票数 4
EN

Stack Overflow用户

发布于 2017-11-17 01:43:36

另一个原因是,在OSX上从brew安装Python3时,CMake永远找不到Python3。看起来CMake开发者知道FindPythonLibs很烂,并且有a ticket to revamp it,但看起来这不会很快发生。

我相信Python解释器本身知道它的库和头文件在哪里,所以我认为最好的做法是运行它来找出答案。为了获得Python解释器的路径,我会强制用户手动指定它。Python的一个大问题是,许多软件都有自己的副本,所以您的系统上最终会有5个副本。拿错一个的机会太高了。让用户指定正确的参数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29245558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档