Python 3: AttributeError: объект "module" не имеет атрибута "path" с помощью urllib в терминале
мой код отлично работает в PyCharm, но у меня есть сообщения об ошибках при попытке открыть его в терминале. Что не так с моим кодом, или где я допустил ошибки?
import urllib.request
with urllib.request.urlopen('http://python.org/') as response:
html = response.read()
print(html)
выход из терминала:
λ python Desktopurl1.py
Traceback (most recent call last):
File "<frozen importlib._bootstrap>", line 2218, in _find_and_load_unlocked
AttributeError: 'module' object has no attribute '__path__'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "Desktopurl1.py", line 1, in <module>
import urllib.request
File "C:UsersPrzemekDesktopurllib.py", line 1, in <module>
import urllib.request
ImportError: No module named 'urllib.request'; 'urllib' is not a package
3 ответов
вы назвали файл C:\Users\Przemek\Desktop\urllib.py
, вам нужно переименовать ее. Вы импортируете из этого не фактический модуль. переименовать C:\Users\Przemek\Desktop\urllib.py
и удалить все C:\Users\Przemek\Desktop\urllib.pyc
.
это не файл, который вы используете, но у вас есть файл в том же каталоге, поэтому python сначала проверяет текущий каталог, следовательно, ошибка.
вы sare тени стандартный пакет библиотеки urllib
назвав исходный файл urllib.py
. Переименуйте его!
тот факт, что это работает вообще в Pycharm является удивительным подвигом инженерии на разработчиков PyCharm!
вы также можете использовать абсолютное импорт (from __future__ import absolute_import
) здесь; но в этом случае я не думаю, что это поможет, так как ваше имя исходного кода запуска затеняет ту самую библиотеку/пакет, который вы пытаетесь использовать!
кроме того, это:
import urllib.request
with urllib.request.urlopen('http://python.org/') as response:
должно быть так:
import urllib
with urllib.urlopen('http://python.org/') as response: