web-dev-qa-db-ja.com

libpython2.7.so.1.0:共有オブジェクトファイルを開けません:そのようなファイルまたはディレクトリはありません

私は端末から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/

運がない...

ところで-私は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ライブラリを見つけることができます...私は何を間違えていますか? CentOS6を使用します。

25
yehudahs

ファイル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を実行します。それは私の問題を解決しました。がんばろう!

40
CK.Nguyen

何らかの理由で、これらの2つは私にとって完璧に機能しています。

apt-get install libpython2.7
Sudo apt-get install libatlas3-base

私はそれらを見つけました here および here

9
John Kitonyo

おそらく、 https://stackoverflow.com/a/1100297/3559967 で答えを試すことができます。その質問の著者はまた、LD_LIBRARY_PATHアプローチは彼にとってはうまくいかないと述べたが、ライブラリパスを/etc/ld.so.confに追加し、ldconfigを実行することはうまくいった。

4
Antony

正解への追加:

次の方法に関する複数の質問:/ opt/rh/python27/root/usr/lib64行をファイル/etc/ld.so.confに貼り付けます

これを行う正しい方法は、/ etc/ld.so.conf.d /に新しいファイルを追加し、そのファイルに上記の行を追加します。

0
rrpr

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をインストールして解決しました(サフィックス:i386に注意してください)

0
Clément Hurlin

これは私が熱心なテーマではありませんが、特に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インストールが anywhere )にある一般的なケース。

上記のソリューションでは、LD_LIBRARY_PATHをエクスポートしたり、ldconfigで混乱したりする必要はありません。

0
ecoe

「export LD_LIBRARY_PATH = "$ {WORK_PATH}/venv/lib」を使用して解決しました。

0
刘远圳