
兩個使用者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 用戶端庫也必須存在。它們可能已安裝在特定於使用者的目錄中,因此無法在系統範圍內供其他使用者使用 - 只是一個想法。這可能是由庫的安裝方式引起的問題。