3
我正在寫一個Python包,看起來像這樣:無法實例Python類,即使它被導入
|- datum/
|- __init__.py
|- database.py
__init__.py
from .database import Database
def connect(url):
print(Database) # for debugging
return Database(url)
database.py
class Database(object):
def __init__(self, url):
self.url = url
...more methods
這是安裝好的作爲開發模式中稱爲datum
的包。如果我叫connect
像外面這個包的:
import datum
db = datum.connect('postgresql://xxx')
...這是輸出:
<class 'datum.database.Database'>
Traceback (most recent call last):
File "Z:\AIS\Flask\ais\engine\scripts\load_pwd_parcels.py", line 30, in <module>
source_db = Database(source_db_url)
NameError: name 'Database' is not defined
我很困惑,因爲該類正在導入精 - 我可以打印和甚至運行dir
就可以看到我的所有方法 - 但是當我嘗試實例化它的「未定義」時。有誰知道我在這裏做錯了嗎?
'load_pwd_parcels.py'相對於'datum'目錄存儲在哪裏? – chepner
它在一個單獨的包(一個Flask應用程序)。 – Rob
你確定你正在導入一個具有'Database'類的'datum'版本嗎?您的問題中沒有足夠的信息來重現問題。 – chepner