Грешка при импортиране на http.client encouter с Python 3.4.1

Следвам примера от онлайн документа на python (21.12.3) за практика. Когато се опитам да стартирам скрипта си с Run Module(F5), винаги получавам грешка при импортиране. Но ако ги напиша директно в командния ред IDLE, python не се оплаква. Не съм сигурен какво правя грешно.

Версията на Python, която използвам, е Python 3.4.1 (v3.4.1:c0e311e010fc, 18 май 2014 г., 10:38:22) [MSC v.1600 32 бита (Intel)] на win32

Сценарият е

import http.client

conn = http.client.HTTPConnection("192.168.1.2", 8080)
conn.request("GET", "/index.html")
r1 = conn.getresponse()
print(r1.status, r1.reason)
conn.close()

Съобщението за грешка е

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 "D:\User\Downloads\http.py", line 1, in <module>
    import http.client
  File "D:\User\Downloads\http.py", line 1, in <module>
    import http.client
ImportError: No module named 'http.client'; 'http' is not a package

person SSC    schedule 22.07.2014    source източник


Отговори (2)


Вероятно сте създали скрипт на Python и сте го кръстили http.py в локалната директория. Това е в конфликт с вградения модул на Python 3 със същото име и води до тази грешка. Бързото решение е да преименувате този файл на нещо по-малко общо, за да избегнете конфликт с вградените модули на Python.

Но ако настоявате, можете да изчистите двусмислието на името, като напълно квалифицирате името на локалния модул на python, като използвате абсолютни импорти:

from . import http

или по-малко объркващо:

from . import http as myhttp

or

from .http import something

В Python 2 е необходимо да активирате функцията абсолютен импорт в най-горната част на модула за импортиране, като използвате изявление за бъдещето преди да използвате тази функция:

from __future__ import absolute_import
person zaadeh    schedule 22.07.2014

Имах същия проблем. В моя случай имаше друг файл с име http.py в същата папка. Просто го преименувах, проблемът е решен.

person Adam Silva    schedule 26.07.2018