
Beide Benutzer foobar
befinden foobiz
sich in derselben Gruppe auf 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
Der Code wird ausgeführt foobar
, erhält aber foobiz
die folgende Meldung:
import oracledb
ModuleNotFoundError: No module named 'oracledb'
Fragen:
- Benötigt
foobiz
es ein eigenesoracledb
Modul? - Wie kann ich es
foobiz
ausführenmy_python.py
, ohneoracledb
es installieren zu müssenfoobiz
?
Antwort1
Der Benutzer foobar verfügt möglicherweise über einen benutzerdefinierten Python-Suchpfad. Sie können Folgendes tun:
import sys
sys.path
und vergleichen Sie die jeweiligen Ergebnisse sorgfältig.
Auch,Selbstbeobachtungkann Ihnen den Speicherort der Bibliothek mitteilen, z. B.:
import inspect
import oracledb
inspect.getfile(oracledb)
DerDokumentErwähnenswert sind auch:
Übergeben Sie unter Linux den Parameter lib_dir nicht im Aufruf: Die Oracle-Clientbibliotheken unter Linux müssen sich im Suchpfad der Systembibliothek befinden, bevor der Python-Prozess startet.
Ich habe nicht im Detail nachgeschaut, aber es sieht so aus, als ob die Python-Bibliothek allein nicht ausreicht, es müssen auch Oracle-Client-Bibliotheken vorhanden sein. Möglicherweise wurden sie in einem benutzerspezifischen Verzeichnis installiert und sind daher für andere Benutzer nicht systemweit verfügbar – nur so ein Gedanke. Dies könnte ein Problem sein, das auf die Art und Weise zurückzuführen ist, wie die Bibliotheken installiert wurden.