我在 Ubuntu 16.04 LTS 下。
我有两个python安装。我实际上是通过pvpython
使用它们,但这可能与当前问题无关。 版本是:
- Python 2.7.12,与
apt-get
一起安装,驻留在系统中。 - Python 2.7.11,驻留在
~/apps/ParaView-5.4.1-Qt5-OpenGL2-MPI-Linux-64bit
,只是从一个tar文件扩展而来。为了获得python提示,我运行~/apps/ParaView-5.4.1-Qt5-OpenGL2-MPI-Linux-64bit/bin/pvpython
.
我的意思是在版本 1 中使用版本 2 中的 readline(因为它没有自己的,尽管它可能很奇怪)。 为此:
-
查找版本 1 中
readline
的位置:>>> import readline >>> readline.__file__ '/usr/lib/python2.7/lib-dynload/readline.x86_64-linux-gnu.so'
-
在此之后的版本 2 中使用它。我将所需内容放在目录中
dir1
这是sys.path
的一个元素(我尝试了/home/santiago/apps/ParaView-5.4.1-Qt5-OpenGL2-MPI-Linux-64bit/lib/python2.7
和/home/santiago/apps/ParaView-5.4.1-Qt5-OpenGL2-MPI-Linux-64bit/lib/python2.7/lib-dynload
)。2.1. 获取
.so
文件。$ cd dir1 $ ln -s /usr/lib/python2.7/lib-dynload/readline.x86_64-linux-gnu.so
2.2. 创建
readline.py
$ nano readline.py
内容(根据上面的参考文献):
def __bootstrap(): global __bootstrap, __loader__, __file__ import sys, pkg_resources, imp __file__ = pkg_resources.resource_filename(__name__,'readline.x86_64-linux-gnu.so') __loader__ = None; del __bootstrap, __loader__ imp.load_dynamic(__name__,__file__) __bootstrap()
现在,当我将版本2与~/apps/ParaView-5.4.1-Qt5-OpenGL2-MPI-Linux-64bit/bin/pvpython
一起使用时,我仍然收到错误(我想摆脱的错误)
ImportError: No module named readline
来自我~/.pythonrc
的import
.
如何将阅读线从版本 1 导入到版本 2?
我设法解决了这个问题。 关键是使用名称readline.so
而不是原始名称进行链接。 其余的无关紧要。
在OP的2.1中:
$ cd ~/apps/ParaView-5.4.1-Qt5-OpenGL2-MPI-Linux-64bit/lib/python2.7/lib-dynload
$ ln -s /usr/lib/python2.7/lib-dynload/readline.x86_64-linux-gnu.so readline.so
就是这样。 事实证明,不需要readline.py
__bootstrap
(项目 2.2)。