[英]Docker: libpython2.7.so.1.0: cannot open shared object file: No such file or directory
[英]libpython2.7.so.1.0: cannot open shared object file: No such file or directory
我試圖從終端運行python腳本,但收到下一條錯誤消息:
ImportError: libpython2.7.so.1.0: cannot open shared object file: No such file or directory
如果我運行print sys.version,我得到:
>>> import sys
>>> print sys.version
2.7.3 (default, Feb 26 2013, 16:27:39)
[GCC 4.4.6 20120305 (Red Hat 4.4.6-4)]
如果我運行ldd / usr / local / bin / python
>> ldd /usr/local/bin/python
linux-vdso.so.1 => (0x00007fff219ff000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003300c00000)
libdl.so.2 => /lib64/libdl.so.2 (0x0000003300800000)
libutil.so.1 => /lib64/libutil.so.1 (0x0000003310e00000)
libm.so.6 => /lib64/libm.so.6 (0x0000003300000000)
libc.so.6 => /lib64/libc.so.6 (0x0000003300400000)
/lib64/ld-linux-x86-64.so.2 (0x00000032ffc00000)
我不明白我有哪個python? 為什么從終端運行這個python腳本失敗? 我試過跑
export LD_LIBRARY_PATH=/usr/local/lib/python2.7/
沒有運氣......
BTW - 我已經設法使用python插件在eclipse中調試此腳本,當我查看調試配置時,我看到PYTHONPATH設置為:
/..../eclipse/plugins/org.python.pydev_3.1.0.201312121632/pysrc/pydev_sitecustomize:/..../workspace/style_checker/src:/usr/local/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg:/usr/local/lib/python2.7/site-packages/pip-1.2.1-py2.7.egg:/usr/local/lib/python2.7:/usr/local/lib/python2.7/plat-linux2:/usr/local/lib/python2.7/lib-tk:/usr/local/lib/python2.7/lib-dynload:/usr/local/lib/python2.7/site-packages
所以eclipse管理以某種方式找到這個python2.7庫...所以我怎么能用eclipse和命令行來做呢? 我究竟做錯了什么 ? 使用CentOS6。
嘗試查找文件libpython2.7.so.1.0
:
locate libpython2.7.so.1.0
在我的情況下,它顯示出來:
/opt/rh/python27/root/usr/lib64/libpython2.7.so.1.0
然后將行/opt/rh/python27/root/usr/lib64
粘貼到文件/etc/ld.so.conf
並運行ldconfig
。 它解決了我的問題。 祝好運!
也許您可以在https://stackoverflow.com/a/1100297/3559967上嘗試答案。 該問題的作者還指出LD_LIBRARY_PATH方法對他不起作用,但是將庫路徑添加到/etc/ld.so.conf
並運行ldconfig
工作。
這不是我熱衷的主題,但我的理解是針對Linux機器(尤其是編譯python二進制文件), 應該在編譯步驟中指定共享庫目錄 。
例如,在鏈接的示例之后,以下是我如何確保除了其他庫之外還包含libpython2.7.so.1.0
:
./configure --enable-shared \
--prefix=/directory/for/Python-2.7.15 \
LDFLAGS="-Wl,--rpath=/usr/local/lib -Wl,--rpath=/directory/for/Python-2.7.15"
注意我也是通過--prefix
選項將python安裝到我選擇的固定目錄中。 這對您來說可能不是必需的,但我這樣做是為了為python安裝可能位於任何地方的一般情況提供解決方案。
通過上面的解決方案,我永遠不必導出LD_LIBRARY_PATH
或亂用ldconfig
我通過使用“export LD_LIBRARY_PATH =”$ {WORK_PATH} / venv / lib“解決了這個問題。
添加到正確的答案:
有關如何執行以下操作的多個問題:然后將行/ opt / rh / python27 / root / usr / lib64粘貼到文件/etc/ld.so.conf
正確的方法是在/etc/ld.so.conf.d/中添加一個新文件,並在該文件中添加上面的行。
在64位Linux上執行32位gdb二進制文件時,我遇到了類似的問題:
arm-eabi-gdb: error while loading shared libraries: libpython2.7.so.1.0: cannot open shared object file: No such file or directory
我通過安裝libpython2.7:i386
解決了它libpython2.7:i386
(注意:i386后綴)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.