两个用户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
该代码执行 for foobar
,但foobiz
收到以下消息:
import oracledb
ModuleNotFoundError: No module named 'oracledb'
问题:
foobiz
需要自己的oracledb
模块吗?- 如何在不安装for 的情况下
foobiz
运行 run ?my_python.py
oracledb
foobiz
答案1
用户 foobar 可能有一个自定义的 Python 搜索路径。你可以做的一件事是:
import sys
sys.path
并仔细比较各自的输出。
还,内省可以告诉你库的位置,例如:
import inspect
import oracledb
inspect.getfile(oracledb)
这文档还提到:
在 Linux 上,请勿在调用中传递 lib_dir 参数:在 Python 进程启动之前,Linux 上的 Oracle 客户端库必须位于系统库搜索路径中。
没有详细查看,但看起来仅 Python 库是不够的,Oracle 客户端库也必须存在。它们可能已安装在特定于用户的目录中,因此无法在系统范围内供其他用户使用 - 只是一个想法。这可能是由库的安装方式引起的问题。