
Ambos usuarios foobar
están foobiz
en el mismo grupo en 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
El código se ejecuta para foobar
, pero foobiz
recibe el siguiente mensaje:
import oracledb
ModuleNotFoundError: No module named 'oracledb'
Preguntas:
- ¿
foobiz
Necesita su propiooracledb
módulo? - ¿Cómo puedo
foobiz
ejecutar runmy_python.py
sin instalaroracledb
forfoobiz
?
Respuesta1
El usuario foobar puede tener una ruta de búsqueda personalizada de Python. Una cosa que podrías hacer es:
import sys
sys.path
y comparar cuidadosamente los resultados respectivos.
También,introspecciónPuede indicarle la ubicación de la biblioteca, por ejemplo:
import inspect
import oracledb
inspect.getfile(oracledb)
Eldocmencionar también:
En Linux, no pase el parámetro lib_dir en la llamada: las bibliotecas del cliente Oracle en Linux deben estar en la ruta de búsqueda de bibliotecas del sistema antes de que comience el proceso de Python.
No lo he mirado en detalle, pero parece que la biblioteca de Python por sí sola no es suficiente; las bibliotecas del cliente de Oracle también deben estar presentes. Posiblemente se hayan instalado en un directorio específico del usuario y, por lo tanto, no estén disponibles en todo el sistema para otros usuarios; es sólo una idea. Esto podría ser un problema derivado de la forma en que se instalaron las bibliotecas.