Я пытаюсь запустить скрипт 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:
Вы связали документацию для Python 3, но вы, кажется, используете Python 2. urllib
на Python 2 не имеет этого модуля error
, как и ошибка.
urllib2
другой стороны, urllib2
имеет этот класс, поэтому вместо него можно использовать urllib2.URLError
.
Эта ошибка означает, что модуль urllib не содержит ничего, что называется error
. У моего urllib нет подмодуля error
.
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.
Обратите внимание, что Ubuntu 16.04 /usr/bin/python
является символической python2
на python2
. Если вы хотите использовать python 3.x, вы должны изменить первую строку своего скрипта из
#!/usr/bin/python
в
#!/usr/bin/python3
(Примечание: "#!" В начале этой строки называется "shebang".)
В качестве альтернативы вы можете создать виртуальную среду, чтобы при ее активации она запускала python 3.
/usr/bin/python
14.04 также является python2 (/ usr / bin / python -> python2.7), так что я уверен, что я не пытаюсь запустить ее на python3
traceback