Недавно у меня есть эта проблема в моем приложении:
Файл "main.py", строка 31, в файле "app.pyc", строка 205, в запуске TypeError: объект "NoneType" не может быть вызван "
Мой код:
xml = EXML()
for pid, product in store.products.items():
xml.addRow()
xml.addCell((product['name']).encode('utf-8'), "String")
xml.addCell((product['symbol']).encode('utf-8'), "String")
xml.addCell((product['brand_name']).encode('utf-8'), "String") # line 205
xml.addCell(str(product['price']), "String")
Python 2.7 32-битный
Он подключен, потому что это проявилось после ~ 1000 итераций, без какой-либо проблемы с предиусом. Это приложение сканирует интернет-магазин, чтобы получить текущие цены. Во-первых, я подумал, что где-то я пропустил что-то, и в результате есть None.encode('utf-8')
, но нет, и "".encode("utf-8") работает. Более того, я не могу воспроизвести эту ошибку на сайте тестирования, иногда появляется при работе с ~ 2500 продуктами. Какие возможны другие источники этой ошибки?
>>> None.encode
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'encode'
>>> None()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'NoneType' object is not callable
На данной строке вам нужно будет как-то установить одну из двух функций, вызываемых None
. Вы уверены, что это не следующая строка, потому что перезапись str
является довольно распространенной ошибкой.
ОК, решил, он бит bizzare, но эта ошибка вызвана product['brand_name']
который иногда является BeautifulSoup.tag
(
на этот раз) вместо BeautifulSoup.NavigableString
как я и планировал. Я все еще не понимаю, зачем и почему?
Anywat, большое спасибо за ответ. :)
python -i
чтобы вызвать интерпретатор после завершения выполнения скрипта, затемimport pdb
и вызватьpdb.pm()
. Это должно открыть сеанс Pdb на вашем последнем отслеживании и позволить вам проверить, что пошло не так.