Найти - Пользователи
Полная версия: python не видит импортированный модуль
Начало » Python для новичков » python не видит импортированный модуль
1 2
ench@nter
Доброго дня, уважаемые,
в файле модуля 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)
….

и всё начинает работать.
Кто виноват и что делать?
Budulianin
ench@nter
Далее следуют определения процедур
У нас нет процедур, только функции.

ench@nter
Кто виноват
Ты.
ench@nter
что делать?
Показать код обрамлённый в теги.
ench@nter
Хорошо, объясняю ещё раз.

# 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
Budulianin
ench@nter

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

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

Тогда оставайся со своими ощущениями.
ench@nter
Budulianin
Тогда оставайся со своими ощущениями.
Если Вам недостаточно информации, которую я предложил - не утруждайте себя. Я не для того сюда обратился, чтобы поперепираться с кем-нибудь. Надеюсь, кто-нибудь другой мне поможет.
GreyZmeem
Похоже вы где-то в коде переопределяете переменную 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)
>>>
Budulianin
ench@nter
Я не для того сюда обратился, чтобы поперепираться с кем-нибудь.
Ты сюда пришёл загадку загадать.
ench@nter
GreyZmeem
Похоже вы где-то в коде переопределяете переменную mymodule
Спасибо, вы оказались правы. Ещё раз внимательно перепроверил и таки нашёл причину - переопределение.
Тот самый случай, когда несколько наводящих слов дороже кучи занудного текста. Ещё раз спасибо!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB