Дополнительно
TypeError: 'module' object is not callable
File "C:\Users\Administrator\Documents\Mibot\oops\blinkserv.py", line 82, in __init__
self.serv = socket(AF_INET,SOCK_STREAM)
TypeError: 'module' object is not callable
Почему я получаю эту ошибку? Я запутался.
Что нужно знать, чтобы ответить на мой вопрос?
483
9
socket
- это модуль, содержащий классsocket
.Вам необходимо выполнить
socket.socket(...)
илиfrom socket import socket
:Обратите внимание, что ошибку здесь довольно легко понять: если
module object is not callable
, то вы, вероятно, вызываете объект модуля! Что такое объект модуля? Это тип объекта, который вы получаете при импорте модуля.Но даже если вы этого не понимаете (что вполне нормально, часто путают, что классы, модули, функции и т.д. - это просто объекты, как и все остальное), есть довольно простой способ начать отладку:
module object is not callable
. Это звучит так, как будто я пытаюсь вызвать что-то, что вы не можете вызвать. Интересно, что я пытаюсь вызвать?"socket
. Это должно быть вызываемым! Интересно, является ли переменнаяsocket
тем, о чем я думаю?print socket
Предположим, что контент YourClass.py составляет:
Если вы используете:
Таким образом, я получил ошибку TypeError: 'модуль' объект не является вызываемой если вы затем пытались использовать в yourclass()`.
Но, если вы используете:
или в yourclass использования.В yourclass (), это работает для меня.
Добавить к основному `init.py в YourClassParentDir, например:
Тогда у вас будет экземпляр вашего класса готов, когда вы импортировать его в другой скрипт:
Вот еще один попался, который взял меня некоторое время, чтобы увидеть даже после прочтения этих постов. Я настраивал скрипт для вызова мой питон ОГРН скрипты. Я получаю модуль не вызвать тоже.
Мой Зиг был, что я делал следующее:
когда мой заг необходимо сделать следующее:<БР>
В резюме, проверьте ваш пакет и модуль раскроя.
То, что я пытаюсь сделать, это иметь каталог скриптов, которые не имеют .расширением py, а еще есть 'бин' модули должны быть в mypackage/bin и эти мои .расширение пы. Я новичок в упаковке, и стараются следовать стандартам, так как я их интерпретации. Итак, я в корне установки:
Если это не соответствует стандарту, пожалуйста, дайте мне знать.
Похоже, что вы импортировали модуль
socket
какimport socket
. Поэтомуsocket
является модулем. Вам нужно либо изменить эту строку наself.serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
, как и каждое другое использование модуляsocket
, либо изменить утверждение import наfrom socket import socket
.Или у вас есть
import socket
послеfrom socket import *
:Я знаю, что этой теме уже год, но настоящая проблема находится в вашем рабочем каталоге.
Я считаю, что рабочий каталог - это
C:\Users\Administrator\Documents\Mibot\oops\
. Пожалуйста, проверьте наличие файла с именемsocket.py
в этой директории. Как только вы его найдете, переименуйте или переместите его. Когда вы импортируете socket,socket.py
из текущего каталога будет использоваться вместоsocket.py
из каталога Python. Надеюсь, это помогло :)Примечание: Никогда не используйте имена файлов из каталога Python'а для сохранения имени файла вашей программы'ы, это будет конфликтовать с вашей программой(ами).
Простой способ решить эту проблему, экспортируйте
PYTHONPATH
переменной среды. Например, для Python 2.6 на Debian/GNU в Линукс:В других операционных системах, вы должны сначала найти этот модуль или файл socket.py`.
При настройке console_scripts ENTRYPOINT в setup.py я нашел этот вопрос существовал, когда конечная точка является модуль или пакет, а не функция в модуле.
Например
Должны были
Так что он будет относиться к вызываемой функции, а не сам модуль. Это, кажется, делает никакой разницы, если модуль имеет
если __имя__ == '__основной__':
блок. Это не сделает модуль функцию.Я думаю, что вы переопределили функцию встроенные/переменная или еще что-то "Модуль" и путем установки глобальной переменной, что "модуля". просто печатать модуля видеть, что в нем.