Конфликт при загрузке библиотеки libstdc ++. So.6 с Tkinter и pandas - PullRequest
0 голосов
/ 28 января 2019

Я использую Tkinter в Python для обработки SpirentTestCenter API с кодом Tcl.Я случайно использую 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 из предпочтительного каталога?

1 Ответ

0 голосов
/ 15 февраля 2019

Но он берет 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, он уже имел правильную и не пытался загрузить неправильную.

...