Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 1, 2014 12:16:08

ench@nter
Зарегистрирован: 2013-05-24
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

python не видит импортированный модуль

Доброго дня, уважаемые,
в файле модуля 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)
….

и всё начинает работать.
Кто виноват и что делать?

Офлайн

#2 Сен. 1, 2014 13:34:03

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

python не видит импортированный модуль

ench@nter
Далее следуют определения процедур
У нас нет процедур, только функции.

ench@nter
Кто виноват
Ты.
ench@nter
что делать?
Показать код обрамлённый в теги.



Офлайн

#3 Сен. 1, 2014 13:50:57

ench@nter
Зарегистрирован: 2013-05-24
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

python не видит импортированный модуль

Хорошо, объясняю ещё раз.

# 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)

Офлайн

#4 Сен. 1, 2014 14:07:32

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

python не видит импортированный модуль

ench@nter

Полный код, включая твой загадочный модуль-функция mymodule, а не его абстракции.



Отредактировано Budulianin (Сен. 1, 2014 14:09:25)

Офлайн

#5 Сен. 1, 2014 14:55:36

ench@nter
Зарегистрирован: 2013-05-24
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

python не видит импортированный модуль

Вы ставите меня в затруднительное положение, уважаемый. Это web-приложение (на базе фреймворка flask). Ошибка возникает в неожиданных местах, в РАЗНЫХ модулях. Конкретно: один раз пришлось повторно внутри функции импортировать мой собственный файл, хотя он и указан в начале файла модуля, а вчера приложение вдруг упало на давно отлаженном месте, при вызове flask-модуля redirect, который также был импортирован выше. И что я могу вам предложить? Исходник всего приложения? Именно поэтому я описал примерную структуру кода.

Я внимательно изучил код на предмет наличия случайных переопределений переменных и пр. - всё в норме. Ощущение такое, будто питону в какой-то момент не хватает памяти, и он вдруг выгружает модуль.

Офлайн

#6 Сен. 1, 2014 15:09:50

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

python не видит импортированный модуль

ench@nter
И что я могу вам предложить? Исходник всего приложения?
ench@nter
Ощущение такое, будто питону в какой-то момент не хватает памяти, и он вдруг выгружает модуль.

Тогда оставайся со своими ощущениями.



Офлайн

#7 Сен. 1, 2014 15:27:01

ench@nter
Зарегистрирован: 2013-05-24
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

python не видит импортированный модуль

Budulianin
Тогда оставайся со своими ощущениями.
Если Вам недостаточно информации, которую я предложил - не утруждайте себя. Я не для того сюда обратился, чтобы поперепираться с кем-нибудь. Надеюсь, кто-нибудь другой мне поможет.

Отредактировано ench@nter (Сен. 1, 2014 15:27:46)

Офлайн

#8 Сен. 1, 2014 17:15:10

GreyZmeem
От: Киев
Зарегистрирован: 2013-12-03
Сообщения: 147
Репутация: +  34  -
Профиль   Отправить e-mail  

python не видит импортированный модуль

Похоже вы где-то в коде переопределяете переменную 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)
>>>

Офлайн

#9 Сен. 1, 2014 17:17:46

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

python не видит импортированный модуль

ench@nter
Я не для того сюда обратился, чтобы поперепираться с кем-нибудь.
Ты сюда пришёл загадку загадать.



Офлайн

#10 Сен. 1, 2014 19:31:44

ench@nter
Зарегистрирован: 2013-05-24
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

python не видит импортированный модуль

GreyZmeem
Похоже вы где-то в коде переопределяете переменную mymodule
Спасибо, вы оказались правы. Ещё раз внимательно перепроверил и таки нашёл причину - переопределение.
Тот самый случай, когда несколько наводящих слов дороже кучи занудного текста. Ещё раз спасибо!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version