Python中LD_LIBRARY_PATH和lib-dynload的关系

K.N*_*zyk 5 python

谁能解释 LD_LIBRARY_PATH 和 lib-dynload 目录之间的关系在 Unix 机器上的 Python 中工作。

我问这个问题的原因是因为在我的工作地点,我们有一个可以在多台 UNIX 机器上运行的 Python 网络安装(不要问为什么,这是一堆奇怪的政治怪事。)它对于大多数系统都运行良好。较旧,但在较新的系统上,当人们尝试使用 tkinter 框架时会遇到问题(因为这些机器安装了较新版本的底层库。)

我做了一些探索,在 lib-dynload 目录中还有另一个库文件,它似乎只是指示 Python 哪个库用于 tkinter 的东西。

做了一些摆弄,我找到了一种绕过问题的方法(本质上,将库的新版本放在用户的 LD_LIBRARY_PATH 的前面似乎可以解决问题。我认为它有效,因为它在版本之前找到了该版本的库在 lib-dynload 文件夹中,但如果您尝试在一台旧机器上这样做,它就会中断),但这确实是一个不优雅的解决方案。