programing

import httplib ImportError : httplib라는 모듈이 없습니다.

goodcopy 2021. 1. 14. 23:15
반응형

import httplib ImportError : httplib라는 모듈이 없습니다.


test.py를 실행할 때이 오류가 발생했습니다.

C:\Python32>python.exe test.py
Traceback (most recent call last):
  File "test.py", line 5, in <module>
    import httplib
ImportError: No module named httplib

그것을 수정하는 방법?

test.py의 코드 블록 :

#!/usr/local/bin/python

import httplib
import sys
import re
from HTMLParser import HTMLParser


class miniHTMLParser( HTMLParser ):

  viewedQueue = []
  instQueue = []

  def get_next_link( self ):
    if self.instQueue == []:
      return ''
    else:
      return self.instQueue.pop(0)


  def gethtmlfile( self, site, page ):
    try:
      httpconn = httplib.HTTPConnection(site)
      httpconn.request("GET", page)
      resp = httpconn.getresponse()
      resppage = resp.read()
    except:
      resppage = ""

    return resppage


  def handle_starttag( self, tag, attrs ):
    if tag == 'a':
      newstr = str(attrs[0][1])
      if re.search('http', newstr) == None:
        if re.search('mailto', newstr) == None:
          if re.search('htm', newstr) != None:
            if (newstr in self.viewedQueue) == False:
              print ("  adding", newstr)
              self.instQueue.append( newstr )
              self.viewedQueue.append( newstr )
          else:
            print ("  ignoring", newstr)
        else:
          print ("  ignoring", newstr)
      else:
        print ("  ignoring", newstr)


def main():

  if sys.argv[1] == '':
    print ("usage is ./minispider.py site link")
    sys.exit(2)

  mySpider = miniHTMLParser()

  link = sys.argv[2]

  while link != '':

    print ("\nChecking link ", link)

    # Get the file from the site and link
    retfile = mySpider.gethtmlfile( sys.argv[1], link )

    # Feed the file into the HTML parser
    mySpider.feed(retfile)

    # Search the retfile here

    # Get the next link in level traversal order
    link = mySpider.get_next_link()

  mySpider.close()

  print ("\ndone\n")

if __name__ == "__main__":
  main()

Python 3에서 Python 2 코드를 실행하고 있습니다. Python 3에서는 모듈 이름이 http.client.

코드 에서 2to3도구 를 실행하고 자동으로 번역되도록 시도 할 수 있습니다. 에 대한 참조 httplibhttp.client대신 사용하도록 자동으로 다시 작성 됩니다.


Docker 컨테이너를 더 작게 만들려고 할 때이 문제가 발생했습니다. 다음과 같이 Python 2.7을 설치했기 때문입니다.

apt-get install -y --no-install-recommends python

그리고 나는 --no-install-recommends깃발 을 포함하지 않아야했습니다 .

apt-get install -y python

참조 URL : https://stackoverflow.com/questions/13778252/import-httplib-importerror-no-module-named-httplib

반응형