簡體   English   中英

將模塊從一個python安裝導入到另一個

[英]Import module from one python install into another

我使用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

我的意思是在版本2中使用版本1中的readline(因為它沒有自己的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中。

如何將Readline從版本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

這就對了。 事實證明, __bootstrap帶有__bootstrap (項目2.2)的readline.py

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM