سؤال

لسبب ما، أتلقى خطأ في اعتراض التتبع/BPT عند الاتصال urllib.urlopen.لقد حاولت على حد سواء urllib و urllib2 بنتائج متطابقة.إليك الكود الذي يلقي الخطأ:

def get_url(url):
    from urllib2 import urlopen
    if not url or not url.startswith('http://'): return None
    return urlopen(url).read() # FIXME!

يجب أن أضيف أن هذا الرمز يعمل على خادم ويب CherryPy مع web.py.

طلب شخص ما التتبع.لسوء الحظ، لا يوجد شيء. Trace/BPT trap يتم إخراجه إلى المحطة وتنتهي العملية.على سبيل المثال

dloewenherz@andros project $ sudo ./index.py 80
http://0.0.0.0:80/
# Here I visit the page which contains the get_url(url) method
Trace/BPT trap
dloewenherz@andros project $

يحرر:أستخدم OS X 10.6.2 وweb.py 0.33 وPython 2.6.2 وCherryPy 3.1.2.

هل كانت مفيدة؟

المحلول

وإضافة الأسطر التالية إلى الجزء العلوي من الملف الرئيسي حل المشكلة:

import urllib2
urllib2.install_opener(urllib2.build_opener())

وبعبارة أخرى، فإنه لا يكفي لاستيراد وحدة urllib2 لكن تحتاج فعلا إلى إنشاء أولى مبارياته في الموضوع الرئيسي.

نصائح أخرى

هل تقوم بتشغيل هذا تحت OS X 10.6؟من الواضح أن الخيوط والوحدات النمطية المستوردة لأول مرة لا تعمل معًا بشكل جيد هناك.معرفة ما إذا كان لا يمكنك استيراد urllib2 خارج الموضوع؟

وهناك المزيد من التفاصيل في الموضوع التالي: مصيدة التتبع/BPT مع وحدة خيوط Python

سأحاول إما نقل استيراد urllib إلى الجزء العلوي من نفس الملف، أو، نظرًا لأنه يبدو أن هناك مشكلة فقط في استيراد وحدة نمطية لأول مرة في سلسلة رسائل، قم باستيرادها في مكان آخر أيضًا، كما هو الحال في نفس الملف الملف باعتباره وظيفتك الرئيسية ().

يحرر: ما هي إصدارات OS X وPython وCherryPy وweb.py التي تستخدمها؟أنا أستخدم OS X 10.5.8 وPython 2.6 وCherryPy 3.1.2 وweb.py 0.33 ولا يمكنني إعادة إنتاج مشكلتك باستخدام الكود أدناه:

import web

urls = (
  '/', 'index'
)

app = web.application(urls, globals())

class index:
    def GET(self):
        from urllib2 import urlopen
        return urlopen("http://google.se/").read()

if __name__ == "__main__": app.run()


$ sudo python index.py 80
http://0.0.0.0:80/
127.0.0.1:59601 - - [08/Nov/2009 09:46:40] "HTTP/1.1 GET /" - 200 OK
127.0.0.1:59604 - - [08/Nov/2009 09:46:40] "HTTP/1.1 GET /extern_js/f/CgJzdhICc2UgACswCjhBQB0sKzAOOAksKzAYOAQsKzAlOMmIASwrMCY4BSwrMCc4Aiw/dDWkSd2jmF8.js" - 404 Not Found
127.0.0.1:59601 - - [08/Nov/2009 09:46:40] "HTTP/1.1 GET /logos/elmo-hp.gif" - 404 Not Found
127.0.0.1:59601 - - [08/Nov/2009 09:46:40] "HTTP/1.1 GET /images/nav_logo7.png" - 404 Not Found

هل هذا الرمز كافٍ لإعادة إنتاج المشكلة من جانبك؟إذا لم يكن الأمر كذلك، فأنا بحاجة إلى مزيد من المعلومات حتى أتمكن من المساعدة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top