
両方のユーザーfoobar
はfoobiz
RHEL 上で同じグループに属しています。
foobar$ python3 -m pip list
Package Version
----------------- -------
oracledb 1.4.2
pip 21.3.1
foobiz$ python3 -m pip list
Package Version
----------------- -------
pip 21.3.1
foobar$ head -3 my_python.py
from datetime import datetime
import time
import oracledb
コードは に対して実行されますfoobar
が、foobiz
次のメッセージが表示されます。
import oracledb
ModuleNotFoundError: No module named 'oracledb'
質問:
foobiz
独自のoracledb
モジュールが必要ですか?- をインストールせずに
foobiz
実行するにはどうすればよいですか?my_python.py
oracledb
foobiz
答え1
ユーザー foobar にはカスタム Python 検索パスがある場合があります。実行できることの 1 つは、次のとおりです。
import sys
sys.path
それぞれの出力を注意深く比較します。
また、内省ライブラリの場所を教えてくれます。例:
import inspect
import oracledb
inspect.getfile(oracledb)
のドキュメントまた、以下についても言及する:
Linux では、呼び出しで lib_dir パラメータを渡さないでください。Linux 上の Oracle クライアント ライブラリは、Python プロセスが開始する前にシステム ライブラリ検索パスに存在している必要があります。
詳細に調べていませんが、Python ライブラリだけでは不十分のようです。Oracle クライアント ライブラリも存在する必要があります。おそらく、それらはユーザー固有のディレクトリにインストールされており、そのため他のユーザーはシステム全体で利用できない可能性があります。これは単なる考えです。これは、ライブラリのインストール方法に起因する問題である可能性があります。