在RedHat 6上运行Python的替代版本会产生“错误的ELF类:ELFCLASS64”

时间:2015-08-04 20:46:26

标签: python pandas redhat elf

我继承了一些我需要修改的python代码。我在我的RedHat 6机器上安装了python 2.7.10并运行了原始代码,该代码产生的结果与上次使用旧版python运行时产生的结果不同。我得到了一个旧的python安装的路径,并尝试使用它运行代码。有错误。这是我到目前为止所做的:

这是旧python安装(2.7.8)的路径:

PROMPT ] alias oldpy='/oldinstall/Python/bin/python'

尝试运行代码并得到第一个错误:

PROMPT ] oldpy ./myScript.py 
Traceback (most recent call last):
  File "./myScript.py", line 3, in <module>
    import pandas as pd
  File "/oldinstall/Python/lib/python2.7/site-packages/pandas/__init__.py", line 45, in <module>
    from pandas.io.api import *
  File "/oldinstall/Python/lib/python2.7/site-packages/pandas/io/api.py", line 14, in <module>
    from pandas.io.packers import read_msgpack, to_msgpack
  File "/oldinstall/Python/lib/python2.7/site-packages/pandas/io/packers.py", line 63, in <module>
    from pandas.msgpack import Unpacker as _Unpacker, Packer as _Packer
ImportError: libstdc++.so.6: cannot open shared object file: No such file or directory

搜索libstdc++.so.6并在/usr/lib64中找到它:

PROMPT ] ll /usr/lib64/libstdc*
lrwxrwxrwx. 1 root root     18 Jul 20  2012 /usr/lib64/libstdc++.so.5 -> libstdc++.so.5.0.7
-rwxr-xr-x  1 root root 828056 Jun 28  2010 /usr/lib64/libstdc++.so.5.0.7
lrwxrwxrwx  1 root root     19 Jul 23 08:54 /usr/lib64/libstdc++.so.6 -> libstdc++.so.6.0.13
-rwxr-xr-x  1 root root 989840 Jun  1 07:39 /usr/lib64/libstdc++.so.6.0.13

所以我按照另一篇SO帖子的建议修改了LD_LIBRARY_PATH

PROMPT ] export LD_LIBRARY_PATH=/usr/lib64:$LD_LIBRARY_PATH

再次尝试再次运行并出现另一个错误:

PROMPT ] oldpy ./myScript.py 
Traceback (most recent call last):
  File "./myScript.py", line 3, in <module>
    import pandas as pd
  File "/oldinstall/Python/lib/python2.7/site-packages/pandas/__init__.py", line 45, in <module>
    from pandas.io.api import *
  File "/oldinstall/Python/lib/python2.7/site-packages/pandas/io/api.py", line 14, in <module>
    from pandas.io.packers import read_msgpack, to_msgpack
  File "/oldinstall/Python/lib/python2.7/site-packages/pandas/io/packers.py", line 63, in <module>
    from pandas.msgpack import Unpacker as _Unpacker, Packer as _Packer
ImportError: libstdc++.so.6: wrong ELF class: ELFCLASS64

如何摆脱此错误,最终能够使用pandas运行旧的python版本?然而,无论我做了什么,我都不想弄乱我正在使用的当前版本的python的环境(如果这是相关的,使用{{安装到我的主目录的本地子目录中) 1}})

1 个答案:

答案 0 :(得分:0)

您尝试使用的python版本未编译为64位,因此它不会与64位libstdc++链接。

运行旧版python的正确方法是在机器上进行安装。我不确定Redhat如何处理多个软件包版本,但如果它不支持它,我会感到惊讶(大多数发行版都有)。

除此之外,您还需要找到安装旧版本的主机。