Я не понимаю, почему, когда возникает ошибка в функции в модуле, который я написал, IPython не показывает мне полную трассировку со строкой в функции, вызвавшей ошибку.
Примечание. Меня не смущает причина этой конкретной ошибки, а то, почему IPython не показывает мне причину.
Мой модуль называется module.py
и содержит функцию function
, под которой написан блок if __name__ == '__main__'
. (Имена модулей и функций были изменены, чтобы защитить личность невиновных — или, может быть, не таких уж невиновных.)
Вот трассировка, которую я получаю, когда возникает ошибка. (Обратите внимание на отсутствие информации о том, какая строка в function
вызвала ошибку.)
In [1]: import module as m
In [2]: call = m.function('hello')
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-2-ec0c1e40ec8c> in <module>()
----> 1 call = m.function('hello')
/home/module.py in function(greeting)
TypeError: join() takes exactly one argument (2 given)
if __name__ == "__main__"
? Определена ли функция в этом блоке? Если это так, я не уверен, как ваш вызов функции вообще работал. Можете ли вы дать SSCCE модуля? - person Blckknght   schedule 20.11.2013function
много вызововjoin()
. Трассировка не говорит мне, какой из них вызвал ошибку. Это необычно; трассировка обычно указывала бы мне на строку в исходном коде, которая вызвала ошибку. Что-то не так в этой ситуации, и я не уверен, что именно. - person dbliss   schedule 20.11.2013module.py
с функцией, которая просто вызываетTypeError
, и блокif __name__ == "__main__":
, который просто имеет оператор печати. Это вызывает ошибку для вас? Если нет, можете ли вы придумать минимальный пример для воспроизведения ошибки? Если да, можете ли вы предоставить некоторые сведения о вашей настройке (версия Python, версия Ipython и т. д.)? - person hunse   schedule 20.11.2013if __name__ == '__main__'
. Это было бы возмутительно. Кроме того, в моем вопросе я утверждаю, что этот блок находится под функцией. Чтобы уточнить, блокif __name__ == '__main__'
находится ниже завершенного определения функции, ниже оператораreturn
. - person dbliss   schedule 20.11.2013function
в блокеif __name__ == '__main__'
. Я сообщу, как только смогу привести полезный пример. - person dbliss   schedule 20.11.2013__builtin__
при запуске модуля/импорте. - person User   schedule 20.11.2013