我继承了一些我需要修改的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}})
答案 0 :(得分:0)
您尝试使用的python版本未编译为64位,因此它不会与64位libstdc++
链接。
运行旧版python的正确方法是在机器上进行安装。我不确定Redhat如何处理多个软件包版本,但如果它不支持它,我会感到惊讶(大多数发行版都有)。
除此之外,您还需要找到安装旧版本的主机。