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

时间:2018-03-09 02:12:56

标签: python ubuntu python-import python-module

我在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
  3. 我的意思是在版本2中使用版本1的readline(因为它没有自己的版本,因为它可能很奇怪)。 要做到这一点:

    1. 查找版本1中readline的位置:

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

      2.1。获取$ cd dir1 $ ln -s /usr/lib/python2.7/lib-dynload/readline.x86_64-linux-gnu.so 文件。

      readline.py

      2.2。创建$ 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()
      

      包含内容(根据ref above):

      ~/apps/ParaView-5.4.1-Qt5-OpenGL2-MPI-Linux-64bit/bin/pvpython
    3. 现在当我使用带有ImportError: No module named readline 的版本2时,我仍然会收到错误(我想要摆脱它)

      import

      来自~/.pythonrc中的document.toString

      如何将readline从版本1导入版本2?

1 个答案:

答案 0 :(得分:0)

我设法解决了这个问题。 关键是要使用名称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项)。