将模块从一个 python 安装导入到另一个



我在 Ubuntu 16.04 LTS 下。

我有两个python安装。我实际上是通过pvpython使用它们,但这可能与当前问题无关。 版本是:

  1. Python 2.7.12,与apt-get一起安装,驻留在系统中。
  2. 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. 查找版本 1 中readline的位置:

    >>> import readline
    >>> readline.__file__
    '/usr/lib/python2.7/lib-dynload/readline.x86_64-linux-gnu.so'
    
  2. 在此之后的版本 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

来自我~/.pythonrcimport.

如何将阅读线从版本 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)。

最新更新