Как я могу получить больше информации об ошибке Python?

1

Я пытаюсь запустить скрипт python на Ubuntu 16.04; сценарий отлично работает на Ubuntu 14.04, но я продолжаю получать вид неопределенного object has no attribute ошибки object has no attribute.

Кажется, этот класс исключений по- прежнему активен, поэтому не уверен, в чем проблема. Я установил python-urllib3 и python3-urllib3 (хотя python в системе 16.04 является символической ссылкой на python-2.7) без везения.

Это моя ошибка и строка 507 из кода. Любой способ получить дополнительную информацию об ошибке?

Traceback (most recent call last):
  File "./jsontest.py", line 507, in <module>
    except urllib.error.URLError as e:
AttributeError: 'module' object has no attribute 'error'
#!/usr/bin/python
import urllib
import re
import json
import sys
import getopt
...
# line 507
except urllib.error.URLError as e:
   print "fail: ", e.reason
...

update: Как отметил @a_guest. Пришлось внести это изменение. Почему он отлично работает 14.04, я не знаю. Возможно, в этом разница была равна 2.7.6 и 2.7.12:

except urllib2.error.URLError as e:
  • 0
    использовать traceback
  • 0
    @jedwards - В основном. 14.04 поставляется с 2.7.6, а 16.04 - с питоном 2.7.12
Теги:

3 ответа

2
Лучший ответ

Вы связали документацию для Python 3, но вы, кажется, используете Python 2. urllib на Python 2 не имеет этого модуля error, как и ошибка.

urllib2 другой стороны, urllib2 имеет этот класс, поэтому вместо него можно использовать urllib2.URLError.

  • 0
    в качестве альтернативы, запустите скрипт с Python 3.
0

Эта ошибка означает, что модуль urllib не содержит ничего, что называется error. У моего urllib нет подмодуля error.

  • 0
    Может быть, специфичный для python3? The urllib module has been split into parts and renamed in Python 3 to urllib.request, urllib.parse, and urllib.error docs.python.org/2/library/urllib.html.
0

Обратите внимание, что Ubuntu 16.04 /usr/bin/python является символической python2 на python2. Если вы хотите использовать python 3.x, вы должны изменить первую строку своего скрипта из

#!/usr/bin/python

в

#!/usr/bin/python3

(Примечание: "#!" В начале этой строки называется "shebang".)

В качестве альтернативы вы можете создать виртуальную среду, чтобы при ее активации она запускала python 3.

  • 0
    Благодарю. Символьная ссылка на /usr/bin/python 14.04 также является python2 (/ usr / bin / python -> python2.7), так что я уверен, что я не пытаюсь запустить ее на python3
  • 0
    @ServerFault Если вы измените первую строку файла, как я предлагаю в моем вопросе, вы можете запустить скрипт с python 3.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню