
Оба пользователя 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
запустить runmy_python.py
безoracledb
установкиfoobiz
?
решение1
Пользователь foobar может иметь собственный путь поиска Python. Одна из вещей, которую вы можете сделать, это:
import sys
sys.path
и тщательно сравните соответствующие результаты.
Также,самоанализмогу сказать вам местоположение библиотеки, например:
import inspect
import oracledb
inspect.getfile(oracledb)
Theдоктакже упомянуть:
В Linux не передавайте параметр lib_dir в вызове: библиотеки клиента Oracle в Linux должны находиться в системном пути поиска библиотек до запуска процесса Python.
Не смотрел подробно, но похоже, что одной только библиотеки Python недостаточно, должны присутствовать также библиотеки Oracle Client. Возможно, они были установлены в каталоге, специфичном для пользователя, и поэтому не доступны другим пользователям в масштабах всей системы — просто мысль. Это может быть проблема, вытекающая из способа установки библиотек.