我有一個第三方模塊(cx_Oracle),我想導入其位置未知的環境。我目前使用pythons configparser,所以我認爲在配置解析器中設置模塊的位置,將該位置追加到路徑,然後從那裏導入第三方模塊將是一個巧妙的技巧。根據配置文件中的路徑導入模塊
這個工作的所有罰款和花花公子,直到我開始重構我的代碼,並開始邏輯拆分到自己的類/方法:
class Database:
def __init__(self, config):
self.CONFIG=config
sys.path.append(self.CONFIG.cx_oracle_path)
from cx_Oracle import cx_Oracle
self.open()
def open(self):
self.CONNECTION = cx_Oracle.Connection(self.CONFIG.username,
self.CONFIG.password,
self.CONFIG.db_sid)
self.CURSOR = self.CONNECTION.cursor()
....
....
....
當然,開放的方法不知道該怎麼辦,因爲cx_Oracle在init中定義,所以open方法看不到它。
我無法想象做到這一點的正確方法,所以我假設我正在考慮這一點。我應該怎麼做才能打開(以及Database類中的所有其他方法)可以看到導入的模塊?
謝謝。
它看起來像你混淆了導入模塊,打開文件和/或連接到數據庫。它通常是非常糟糕的設計,沒有模塊在已知位置導入,您應該控制它。我不清楚,你期望從'self.open() –
你的'import'只會在'__init__'範圍內,如果我沒有弄錯。我想你正在尋找'__import __()'。 – 2rs2ts
@JanVlcinsky我在導入cx_Oracle模塊,以便可以與oracle數據庫進行通信。然後,我在self.open()方法中打開與該數據庫的連接。我明白模塊通常應該在已知的位置,也許我應該告訴我的IT團隊將模塊安裝在正確的位置。一般來說,我們各個團隊之間的摩擦少,只需在一個文件夾中擁有「您需要的一切」。我遇到的問題是從不同的位置調用該程序,也許這就是我自己工作的地方。 –