Уведомления

Группа в Telegram: @pythonsu

#1 Май 28, 2013 19:33:36

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

Ошибка в подключении собственных пакетов

Начал изучать питон и сразу возникла проблема с подключением модулей.

ОС Windows, Python 3.3

Проект выглядит так:

C:\Папка_с_проектами
——–\Папка_проекта
————-\Папка_модулей
——————\__init__.py
——————\Модуль1.py
——————\Модуль2.py

Пытаюсь подключить Модуль2 к Модулю1, пишу в Модуле1

from Папка_модулей import Модуль2
переменная = Модуль2()

и появляется ошибка:
Traceback (most recent call last):
File “C:\Папка_с_проектами\Папка_проекта\Папка_модулей\Модуль1.py”, line 2, in <module>
переменная = Модуль2()
TypeError: ‘module’ object is not callable
Подскажите в чем проблема? Уже весь мозг сломал и Оф документацию до дыр проглядел

Офлайн

#2 Май 28, 2013 19:38:51

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Ошибка в подключении собственных пакетов

для начала, какой смысл несёт конструкция

переменная = Модуль2()
?

Офлайн

#3 Май 28, 2013 19:44:09

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

Ошибка в подключении собственных пакетов

Никакой. Проверка присвоения класса из Модуля2

Офлайн

#4 Май 28, 2013 19:54:10

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Ошибка в подключении собственных пакетов

Модуль2 - модуль, а не класс, а Папка_модулей - обычный пакет, поскольку в ней __init__.py

Офлайн

#5 Май 28, 2013 20:11:46

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

Ошибка в подключении собственных пакетов

Я еще пока в терминах не селен. похожая ситуация.

2 файла в корневой директории: test1.py и test2.py

содержимое test2.py

class Test2():
    def __str__(self):
        return 'test2'

содержимое test1.py
import test2
print(test2())

результат
Traceback (most recent call last):
  File "C:\PythonProgects\tests\test1.py", line 3, in <module>
    print(test2())
TypeError: 'module' object is not callable

Почему этот модуль не может быть вызван?

Отредактировано PaulTmatik (Май 28, 2013 20:13:09)

Офлайн

#6 Май 28, 2013 20:25:54

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Ошибка в подключении собственных пакетов

PaulTmatik
Почему этот модуль не может быть вызван?
А почему он должен вызываться?

Офлайн

#7 Май 28, 2013 20:30:18

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

Ошибка в подключении собственных пакетов

Все разобрался. Я подгружаю модуль, но не вызываю объект.
так как у меня объект имеет одинаковое с файлом имя, вот я и запутался.

Надо было так:

from Папка_модулей import Модуль2
переменная = Модуль2.Модуль2()

а во втором случае
import test2
print(test2.test2())

Офлайн

#8 Май 28, 2013 20:30:27

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Ошибка в подключении собственных пакетов

PaulTmatik
содержимое test1.py
import test2
print(test2())
Попробуйте:
import test2
print(test2.Test2)
print(test2.Test2())

Офлайн

#9 Май 28, 2013 20:31:42

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Ошибка в подключении собственных пакетов

PaulTmatik
Все разобрался.
Отлично!

Офлайн

#10 Май 28, 2013 20:37:47

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

Ошибка в подключении собственных пакетов

Модуль2 - модуль, а не класс
теперь я понял смысл этой фразы

Отредактировано PaulTmatik (Май 28, 2013 20:38:02)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version