在Mac上构建Python库时遇到平坦命名空间错误

3 投票
1 回答
537 浏览
提问于 2025-04-16 04:34

一般来说,每当我在Mac上构建Python库时,我都会感到很沮丧。我之前用Boost::Python还算顺利,如果用distutils的话,大部分情况下都能正常工作。

不过,我一直搞不清楚到底什么组合能成功,什么又不行。具体来说,我常常遇到一个让人头疼的问题,就是找不到某个符号,因为我想用的库没有扁平命名空间。我试过切换到MacPorts版本的Python,只用MacPorts的库,但还是没成功。

最近我遇到的问题是,我需要用的一个工具依赖于OpenCV库,而OpenCV又依赖于FFmpeg库(其实两个库都是)。所有东西都能编译,但当我执行'import MYLIB'时,出现了符号_pix_fmt_info在扁平命名空间中找不到的错误。我用DYLIB_LIBRARY_PRINT查看加载的所有库,发现libavformat、libavcodec、libavutil和libswscale都已经加载了。

所以,我有几个问题。具体来说,有没有人知道这可能是什么情况?我需要手动构建libffmpeg吗?我是不是做了什么很傻的事,比如忘记了某个库(我检查过,觉得应该没有..)

更一般来说,有没有好的方法来处理扁平命名空间的问题?我是不是总得担心哪些库被包含了?有没有人有好的经验可以分享,让事情顺利进行?

有时候我真的怀念Linux的世界..


编辑


抱歉,看起来这次是我自己的愚蠢导致的。我还没搞清楚具体问题,但看起来找不到的符号属于我想的不同的库(也就是说,不是libffmpeg)。

不过,我还是很想知道其他人处理扁平命名空间的经验。

1 个回答

0

我在用这个选项编译“C”语言的Python绑定时,遇到了这个问题:

-fvisibility=hidden parameter

这个问题发生在Mac OS X系统上。

我理解这个问题和“平坦命名空间”问题有点像。

撰写回答