使用Tkinter和Pandas加载libstdc ++。so.6库时发生冲突

时间:2019-01-28 14:24:47

标签: python pandas tkinter libstdc++

我正在Python中使用Tkinter来处理带有SpirentTestCenter代码的Tcl API。我碰巧也使用了pandas,当一起使用时,我也遇到了库加载问题。

import os
sStcVersion='4.73'
sStdPath = '/repo/dinesh/MY_PACKAGES/STC/'+sStcVersion
import pandas as pd
import Tkinter


tcl = Tkinter.Tcl()
tcl.eval('puts $::env(LD_LIBRARY_PATH)')
tcl.eval('source '+'/repo/dinesh/MY_PACKAGES/STC/'+sStcVersion+'/pkgIndex.tcl')
tcl.eval('package require SpirentTestCenter 4.73')

>>> Error Occured while loading the Spirent Automation Internal Utility Library (couldn't load file "/repo/MY_PACKAGES/STC/4.73/libsTcl.so": 
/repo/dinesh/MY_PACKAGES/robot/PACKAGES/lib_for_64bit_compat/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /repo/MY_PACKAGES/STC/4.73/libsTcl.so)).

必需的libstdc++.so.6libsTcl.so位于同一目录(即/repo/MY_PACKAGES/STC/4.73/)。但是它是从libstdc++.so.6中可用的另一个目录中提取LD_LIBRARY_PATH的。我尝试更改LD_LIBRARY_PATH,但是仍然从错误的目录中获取它。

如果我不导入pandas模块,则不会出现此问题。 libstdc++.so.6似乎已经加载了/repo/dinesh/MY_PACKAGES/robot/PACKAGES/lib_for_64bit_compat/libstdc++.so.6中的熊猫。

如何强制python从首选目录中获取libstdc++.so.6

1 个答案:

答案 0 :(得分:0)

  

但是它从另一个目录中获取libstdc ++。so.6,该目录在LD_LIBRARY_PATH中可用。我尝试更改LD_LIBRARY_PATH,但仍然从错误的目录中获取它。

这表明不是从LD_LIBRARY_PATH获取它,或者您没有正确更改LD_LIBRARY_PATH。

您可以尝试在环境中设置LD_PRELOAD=/repo/MY_PACKAGES/STC/4.73/libstdc++.so.6,以便先加载所需的版本,以便当加载程序看到对libstdc++.so.6的依赖时,它已经拥有正确的版本并且不会尝试加载错误的一个。