私は端末から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を使用します。
ファイル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
を実行することはうまくいった。
正解への追加:
次の方法に関する複数の質問:/ 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
をインストールして解決しました(サフィックス:i386に注意してください)
これは私が熱心なテーマではありませんが、特に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
で混乱したりする必要はありません。
「export LD_LIBRARY_PATH = "$ {WORK_PATH}/venv/lib」を使用して解決しました。