[英]Import module from one python install into another
我使用Ubuntu 16.04 LTS。
我有兩個python安裝。 我實際上是通過pvpython
使用它們的,但這可能與當前問題無關。 這些版本是:
apt-get
,位於系統目錄中。 ~/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中的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
中。
如何將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.