2012-10-24 20 views
5

मैंने दो पुस्तकालयों urllib और from urllib.request import urlopen आयात किया।पायथन urllib उपयोग

opnerHTMLnum = urllib.request.build_opener() 
AttributeError: 'module' object has no attribute 'request' 

जब मैं from urllib.request import urlopen लाइन कोड को बहाल:

दूसरा एक पहले

में निहित है जब मैं कोड पर पहुँच गईं और from urllib.request import urlopen लाइन को दूर करने की कोशिश की, मैं इस संदेश मिला रन ।

क्या कोई बता सकता है क्यों?

import re 
#import http.cookiejar 
import os.path 
#import time 
#import urllib3 
import urllib 
from urllib.request import urlopen 
import sys 
import smtplib 
from email.mime.text import MIMEText 

# ... 

    opnerHTMLnum = urllib.request.build_opener() 
+1

'urllib.request आयात urlopen' से से urllib2 है देता है ' ImportError: अजगर 2.7 पर कोई मॉड्यूल नामित request'। पाइथन का कौन सा संस्करण आप उपयोग कर रहे हैं? – utapyngo

उत्तर

2

urllib पैकेज सिर्फ इतना है कि, एक पैकेज है। यह __init__.pyurllib.request आयात नहीं करता है और इस प्रकार आप केवल urllib आयात करके urllib.request तक नहीं पहुंच सकते हैं। यह केवल नामस्थान के रूप में है।

इसके बजाय urllib.request आयात करें।

2

import X और from X import Y जो भी मॉड्यूल या पैकेज X दिया गया है, का आयात करें।

इस मामले में, urllib एक पैकेज है। जब आप import urllib, तो पैकेज स्वयं आयात किया जाता है, और आप इसका संदर्भ प्राप्त करते हैं, लेकिन किसी भी submodules आयात नहीं किया जाता है (इस मामले में)। जब आप from urllib.request import ... करते हैं, तो पाइथन वास्तव में पूरे मॉड्यूल urllib.request आयात करता है, लेकिन फिर उन नामों को चुनता है जिन्हें आपने पूछा था और आपको संदर्भ देते हैं।

यदि आप urlopen का उपयोग नहीं कर रहे हैं, तो आप आसानी से import urllib.request भी कर सकते हैं और एक ही परिणाम प्राप्त कर सकते हैं।

7

आप पाइथन 3 पैकेज urllib.request को पाइथन 2.7 के साथ भ्रमित कर रहे हैं जो urllib2 है। कृपया ऐसा मत करो। पायथन 3 और पायथन 2 पुस्तकालय अलग हैं। तुम सब चाहते हो सकता है को Python2

import urllib2 
from urllib2 import Request 
req = Request("yoururl") 
res = urllib2.urlopen(req) 
+0

मुझे लगता है कि ओपी टैग के साथ भ्रमित हो गया है; अगर वह वास्तव में पायथन 2.7 पर था, तो एक आयात त्रुटि होती, न कि प्रश्न में बताए गए व्यवहार। –

+0

हाँ, सच है। यह गलत तरीके से टैग किया गया है। –

+0

अच्छी पकड़, मैं इस उदाहरण का पालन कर रहा था: http://www.nltk.org/book/ch03.html और मुझे पायथन 3 को संदर्भित उदाहरणों का एहसास नहीं हुआ। मेरा env पायथन 2.7 है। +1 मतदान किया, धन्यवाद! – markc