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

时间:2017-06-16 19:24:22

标签: c++ python-2.7 linker ffi

所有

我正在为嵌入式系统开发一个新的C ++项目。系统的一部分是我们需要接口的一些遗留Python代码。我已经使用Python提供的各种PyImport_ImportModule函数等原型化了C ++到Python接口,并在我的主机系统(Ubuntu 64 bit 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中使用任何非标准标志(可能需要一些额外的设置)?

1 个答案:

答案 0 :(得分:1)

这通常发生在:

  • 需要清理构建或
  • 链接错误的libpython lib。我建议从尝试干净的构建开始,然后仔细检查你的链接标志(确保你为Python-2.7构建并链接到Python-2.7而不是说Python-3。*等)。

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

修改:这也可能相关:undefined symbol: PyExc_ImportError when embedding Python in C