自定义 Python 构建 - time.so:未定义符号:PyExc_ValueError

Custom Python build - time.so: undefined symbol: PyExc_ValueError

全部,

我正在为嵌入式系统开发一个新的 C++ 项目。系统的一部分是一些遗留的 Python 代码,我们也需要连接这些代码。我已经使用 Python 提供的各种 PyImport_ImportModule 函数等为 Python 接口制作了 C++ 原型,并在我的主机系统(Ubuntu 64 位 17.04)上进行了测试.

然而,新项目中的构建系统也会尝试构建所有依赖项,因此它从源代码构建 Python 2.7.13。我看到的问题是用于主机系统 Python 的接口代码不适用于新构建的源 Python。我看到的错误是 "time.so: undefined symbol: PyExc_ValueError",我试图从 C++ 调用的 .py 文件确实将时间导入为前几行之一。我检查了一下 time.so 出现在自定义构建的 Python 中,我确实更新了 LD_LIBRARY_PATH 以包含它,但这没有帮助。在 Python 的构建结束时,我确实看到了这些警告,所以也许其中一个是相关的?

Python build finished, but the necessary bits to build these modules were not found:
_bsddb             _sqlite3           _ssl            
_tkinter           bsddb185           bz2             
dbm                dl                 gdbm           
imageop            readline           sunaudiodev     
zlib                                                  

任何人都可以建议下一步尝试什么吗?在我们从源代码构建的 Python 中,我们没有启用任何特殊选项或使用任何非标准标志(可能需要一些额外的设置)?

这通常发生在:

  • 需要清理构建或
  • 正在 linked 错误的 libpython 库。我建议从尝试干净构建开始,然后仔细检查你的 linking 标志(确保你构建 Python-2.7 和 link 到 Python-2.7 而不是说 Python-3.* 等)。

另外,请看这个讨论,它看起来像一个非常相似的问题:https://www.panda3d.org/forums/viewtopic.php?t=13222

编辑:这也可能是相关的:undefined symbol: PyExc_ImportError when embedding Python in C