У меня возникла странная ошибка запуска приложения и задавалась вопросом, может ли кто-нибудь узнать, как отлаживать/разрешать ее.python 3 import TypeError error
Я бегу приложение Flask с помощью Python 3. Я пнуть вещи, запустив: python manage.py runserver
и ниже StackTrace генерируется:
Traceback (most recent call last):
File "/projectbase/manage.py", line 19, in <module>
create_tables()
File "/projectbase/myproject/__init__.py", line 15, in create_tables
from myproject.models.util import Weekday, weekday_type
File "<frozen importlib._bootstrap>", line 2237, in _find_and_load
File "<frozen importlib._bootstrap>", line 2226, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 1200, in _load_unlocked
File "<frozen importlib._bootstrap>", line 742, in __exit__
File "<frozen importlib._bootstrap>", line 742, in <genexpr>
TypeError: an integer is required (got type NoneType)
Проблема заключается в том, когда я запускаю его в отладчике и установить точки останова, проблема уходит. Но если я запустил его без отладки, проблема существует.
Для дальнейшей ссылки функция create_tables()
вызывается manage.py код/файл выглядит следующим образом:
from myproject.app import app
from myproject.app import db
def create_tables():
from myproject.models.util import Weekday, weekday_type
from myproject.models.activity import Activity, activities_tags, Occurrence, Tag
db.create_all()
И далее Weekday
и weekday_type
код в вопросе выглядит следующим образом:
from myproject.app import db
from myproject.models.enum import DeclEnum
class Weekday(DeclEnum):
Sunday = 'Sunday', {'offset': 0}
Monday = 'Monday', {'offset': 1}
Tuesday = 'Tuesday', {'offset': 2}
Wednesday = 'Wednesday', {'offset': 3}
Thursday = 'Thursday', {'offset': 4}
Friday = 'Friday', {'offset': 5}
Saturday = 'Saturday', {'offset': 6}
weekday_type = Weekday.db_type(metadata=db.metadata)
weekday_type.register_with_psycopg(db.engine)
DeclEnum
тип I используется, в основном, просто скопирован с этого gist.
Единственная настройка, которую я сделал для кода, заключалась в том, чтобы сделать DeclEnum
немного более гибким, чтобы он мог принимать словарь значений, а не только value
и description
. Помимо этого я ничего не изменил.
Любые идеи, что здесь происходит? Поскольку акт отладки исправляет ошибки, я не знаю, как это сделать, чтобы понять суть проблемы.
Заранее спасибо.