[Python] module 'urllib' has no attribute 'request'

    파이썬에 관련된 코드를 실행 도중, urllib에서 에러가 발생하였다. 

     

    실행코드

    import os
    import tarfile
    import urllib
    
    DOWNLOAD_ROOT = "https://raw.githubusercontent.com/ageron/handson-ml2/master/"
    HOUSING_PATH = os.path.join("datasets", "housing")
    HOUSING_URL = DOWNLOAD_ROOT + "datasets/housing/housing.tgz"
    
    def fetch_housing_data(housing_url=HOUSING_URL, housing_path=HOUSING_PATH):
        os.makedirs(housing_path, exist_ok=True)
        tgz_path = os.path.join(housing_path, "housing.tgz")
    
        urllib.request.urlretrieve(housing_url, tgz_path)
        housing_tgz = tarfile.open(tgz_path)
        housing_tgz.extractall(path=housing_path)
        housing_tgz.close()
    
    fetch_housing_data(HOUSING_URL, HOUSING_PATH)

     

    에러내용

    Traceback (most recent call last):
      File "D:/Study/Python/study01.py", line 18, in <module>
        fetch_housing_data(HOUSING_URL, HOUSING_PATH)
      File "D:/Study/Python/study01.py", line 13, in fetch_housing_data
        urllib.request.urlretrieve(housing_url, tgz_path)
    AttributeError: module 'urllib' has no attribute 'request'

     

    스택오버플로우 관련 내용

    urllib에 관련 내용

     

    내용을 보면, urllib의 _init_.py가 비어 있어서, urllib만 생성해서는 액세스를 할 수 없다는 의미이다. 즉, 이런 경우 urllib 다음의 request까지 import로 선언해야 된다는 의미였다.

     

    수정 부분

    import urllib.request as urllib
    
    urllib.urlretrieve(housing_url, tgz_path)

    urllib.request을 import 하였고, urllib.request.urlretrieve를 urllib.urlretrieve로 변환하니 이상없이 동작하였다.

     

    반응형

    댓글

    Designed by JB FACTORY