python: 共有ライブラリの読み込み中にエラーが発生しました: libpython3.4m.so.1.0: 共有オブジェクトファイルを開くことができません:そのようなファイルまたはディレクトリがありません

virtualenvを使用してPythonの仮想環境を作成し、有効化すると、Pythonがインストールされている場所を確認することができます、

(virtualenv-test) bash-4.1$ whereis python

python:/usr/bin/python2.6 /usr/bin/python2.6-config /usr/bin/python /usr/lib/python2.6 /usr/lib64/python2.6 /usr/X11R6/bin/python2.6 /usr/X11R6/bin/python2.6-config /usr/X11R6/bin/python /usr/bin/X11/python2.6 /usr/bin/X11/python2.6-config /usr/bin/X11/python /usr/include/python2.6 /usr/share/man/man1/python.1.gz > (virtualenv-test) bash-4.1$ which python

/data/virtualenv-test/bin/python

しかし、pythonを入力した後、以下のようなエラーメッセージが表示されましたが、根本的な理由は何でしょうか?

(virtualenv-test) bash-4.1$ python
python: error while loading shared libraries: libpython3.4m.so.1.0: cannot open shared object file: No such file or directory
質問へのコメント (1)

1.ある人が、この方法で問題を解決できると言っていました(私は別の方法で解決したので、うまくいくかどうかわかりません): Py3.4&#39 の lib パスを $LD_LIBRARY_PATH 環境変数に追加する まず、python3.4のlibパス(インストールしたフォルダ内)を調べます(私の場合):/opt/python361/libを環境変数に追加してください: バッシュ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/python361/lib


2.python3.6でvirtualenvを使用する際に同様の問題が発生したため、以下の方法で解決しました:
- まず、`sudo vi /etc/ld.so.conf` を編集し、このファイルに python3.x の lib パス(私の場合は /opt/python361/lib )を追加し、この conf ファイルを修正したものを保存します;
- そして、`sudo /sbin/ldconfig -v`でこのファイルをアクティブにします。以上です。
解説 (1)

LD_LIBRARY_PATH=[libpython3.4m.so の Python パス]`をエクスポートする。

libpython3.4m.so`は、ビルドしたpythonのソースの下にあります。

.bashrcに記述しておくと、ログイン時に自動的に設定されます。

私のマシンではvirtualenvを強制的に3.4にすることはできませんが、virtualenvのlibの下に、ローカルのpythonインストールへのシンボリックリンクがたくさんあるのがわかると思います。libpython3.4m.so`はその中の一つで取得されているのでしょう。

解説 (0)

Python 3.6では、以下の方法で修正されました。

sudo apt-get install libpython3.6-dev
解説 (0)

別の方法は、たとえば、configureに LDFLAGS = "-Wl、-rpath / usr / local / lib"を追加することです。

./configure --prefix=/usr/local --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"

/ usr / local / liblibpython3のパスです。* .soファイルが入っています。

解説 (1)

上記の称賛、python 3.Xの場合、この問題を次のように修正できます。

sudo apt-get install libpython3.x-dev

手動で環境パスを変更する必要はありません。

解説 (0)