Форум сайта python.su
0
Доброго дня, уважаемые,
в файле модуля rootmodule.py, в самом начале, есть команда импорта некоего модуля:
import mymodule
Далее следуют определения процедур, внутри которых есть обращения к mymodule.
def proc():
a = mymodule(var)
….
Всё работает.
Потом, в процессе разработки и заполнения файла rootmodule.py, при исполнении приложения возникает ошибка в строке a = mymodule(var), причиной которой является то, что питон не находит mymodule. Выглядит так, будто mymodule не импортирован. Причем, по непонятному алгоритму, иногда питон явно говорит, что модуль не найден, а иногда пишет TypeError: ‘bool’ object is not callable. И при этом в других процедурах rootmodule.py, где есть ссылка на mymodule, ошибки не возникают.
Достаточно вставить команду импорта:
def proc():
import mymodule
a = mymodule(var)
….
и всё начинает работать.
Кто виноват и что делать?
Офлайн
33
ench@nterУ нас нет процедур, только функции.
Далее следуют определения процедур
ench@nterТы.
Кто виноват
ench@nterПоказать код обрамлённый в теги.
что делать?
Офлайн
0
Хорошо, объясняю ещё раз.
# rootmodule.py
import mymodule def proc1(): # Эта функция работает a = mymodule(var) return a def proc2(): # Эта функция работает a = mymodule(var) return a def proc3(): # Эта функция до поры работала, а потом стала генерировать исключение TypeError: ‘bool’ object is not callable. Добавляю в её начало import mymodule - и опять работает. a = mymodule(var) return a
Отредактировано ench@nter (Сен. 1, 2014 13:51:23)
Офлайн
33
ench@nter
Полный код, включая твой загадочный модуль-функция mymodule, а не его абстракции.
Отредактировано Budulianin (Сен. 1, 2014 14:09:25)
Офлайн
0
Вы ставите меня в затруднительное положение, уважаемый. Это web-приложение (на базе фреймворка flask). Ошибка возникает в неожиданных местах, в РАЗНЫХ модулях. Конкретно: один раз пришлось повторно внутри функции импортировать мой собственный файл, хотя он и указан в начале файла модуля, а вчера приложение вдруг упало на давно отлаженном месте, при вызове flask-модуля redirect, который также был импортирован выше. И что я могу вам предложить? Исходник всего приложения? Именно поэтому я описал примерную структуру кода.
Я внимательно изучил код на предмет наличия случайных переопределений переменных и пр. - всё в норме. Ощущение такое, будто питону в какой-то момент не хватает памяти, и он вдруг выгружает модуль.
Офлайн
33
ench@nter
И что я могу вам предложить? Исходник всего приложения?
ench@nter
Ощущение такое, будто питону в какой-то момент не хватает памяти, и он вдруг выгружает модуль.
Офлайн
0
BudulianinЕсли Вам недостаточно информации, которую я предложил - не утруждайте себя. Я не для того сюда обратился, чтобы поперепираться с кем-нибудь. Надеюсь, кто-нибудь другой мне поможет.
Тогда оставайся со своими ощущениями.
Отредактировано ench@nter (Сен. 1, 2014 15:27:46)
Офлайн
34
Похоже вы где-то в коде переопределяете переменную mymodule
>>> from datetime import datetime >>> >>> datetime(2014, 9, 1) datetime.datetime(2014, 9, 1, 0, 0) >>> >>> datetime = True >>> datetime(2014, 9, 1) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'bool' object is not callable >>> >>> from datetime import datetime >>> datetime(2014, 9, 1) datetime.datetime(2014, 9, 1, 0, 0) >>>
Офлайн
33
ench@nterТы сюда пришёл загадку загадать.
Я не для того сюда обратился, чтобы поперепираться с кем-нибудь.
Офлайн
0
GreyZmeemСпасибо, вы оказались правы. Ещё раз внимательно перепроверил и таки нашёл причину - переопределение.
Похоже вы где-то в коде переопределяете переменную mymodule
Офлайн