我正在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.6
与libsTcl.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
?
答案 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
的依赖时,它已经拥有正确的版本并且不会尝试加载错误的一个。