Werkzeug: ImportError تسبب استثناء أثناء التعامل مع استثناء

تم إنشاؤها على ٢٢ ديسمبر ٢٠١٦  ·  5تعليقات  ·  مصدر: pallets/werkzeug

بعد قليل من التصحيح ، قمت بتضييق الخطأ التالي إلى werkzeug / http.py # L26 ، والذي يعطي الاستثناء التالي: ImportError: cannot import name 'parse_http_list' . يوجد أدناه traceback بالكامل ، والذي يتضمن استثناءً داخل الاستثناء يحاول الرجوع إلى مرجع Python القديم.

Traceback (most recent call last):
  File "/usr/local/lib/python3.5/site-packages/werkzeug/http.py", line 26, in <module>
    from urllib2 import parse_http_list as _parse_list_header
ImportError: No module named 'urllib2'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "examples/http.py", line 2, in <module>
    from flask import Flask
  File "/usr/local/lib/python3.5/site-packages/flask/__init__.py", line 17, in <module>
    from werkzeug.exceptions import abort
  File "/usr/local/lib/python3.5/site-packages/werkzeug/__init__.py", line 152, in <module>
    __import__('werkzeug.exceptions')
  File "/usr/local/lib/python3.5/site-packages/werkzeug/exceptions.py", line 71, in <module>
    from werkzeug.wrappers import Response
  File "/usr/local/lib/python3.5/site-packages/werkzeug/wrappers.py", line 26, in <module>
    from werkzeug.http import HTTP_STATUS_CODES, \
  File "/usr/local/lib/python3.5/site-packages/werkzeug/http.py", line 28, in <module>
    from urllib.request import parse_http_list as _parse_list_header
  File "/usr/local/Cellar/python3/3.5.2_3/Frameworks/Python.framework/Versions/3.5/lib/python3.5/urllib/request.py", line 88, in <module>
    import http.client
  File "/Users/alexgurrola/Projects/intrepid/examples/http.py", line 2, in <module>
    from flask import Flask
ImportError: cannot import name 'Flask'

التعليق الأكثر فائدة

الرجاء إعادة تسمية ملفك من http.py إلى شيء آخر ، وإلا فإنه يتعارض مع وحدة http من stdlib.

ال 5 كومينتر

يرجى تقديم مثال لإعادة إنتاج هذا.

باستخدام Python 3.5.2 ، ستفشل هذه الفقرة في werkzeug/http.py بشكل متكرر.

try:
    from urllib.request import parse_http_list as _parse_list_header
    from urllib.parse import unquote_to_bytes as _unquote
except ImportError:  # pragma: no cover
    from urllib2 import parse_http_list as _parse_list_header, \
        unquote as _unquote

أيضًا ، سيشتكي النص أعلاه على مستوى أعمق بدون وجود try/except ، والذي نبهني إلى تغيير محتمل في واجهات برمجة التطبيقات الداخلية مع urllib. إذا كان ذلك مفيدًا ، فقد وجدت المشكلة في الأصل عند استخدام Flask 0.12 وتشغيل البرنامج النصي التالي.

import os
from flask import Flask

app = Flask(__name__)
app.config.from_object(os.environ['APP_SETTINGS'])


@app.route('/')
def hello():
    return "Hello World!"


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

الرجاء إعادة تسمية ملفك من http.py إلى شيء آخر ، وإلا فإنه يتعارض مع وحدة http من stdlib.

من الواضح أن Python لا يمكنها التفريق بين البرامج النصية التي تحمل الاسم نفسه ، لذا فقد أرسلني في مطاردة جامحة من خلال هذه المكتبات ... أنا أقدر المساعدة.

الرجاء إعادة تسمية ملفك من http.py إلى شيء آخر ، وإلا فإنه يتعارض مع وحدة http من stdlib.

أنا جديد في بايثون ، لذا أرتكب نفس الخطأ أيضًا ...

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

SimonSapin picture SimonSapin  ·  12تعليقات

KangOl picture KangOl  ·  16تعليقات

davidism picture davidism  ·  9تعليقات

abathur picture abathur  ·  13تعليقات

lepture picture lepture  ·  6تعليقات