Я пишу пакет 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
Это отдельный пакет (приложение для фляшек). – Rob
Вы уверены, что используете версию 'datum', которая имеет класс' Database'? Недостаточно информации в вашем вопросе, чтобы воспроизвести проблему. – chepner