Werkzeug: ImportError verursacht eine Ausnahme bei der Behandlung einer Ausnahme

Erstellt am 22. Dez. 2016  ·  5Kommentare  ·  Quelle: pallets/werkzeug

Nach ein wenig Debugging habe ich den folgenden Fehler auf werkzeug/http.py#L26 eingegrenzt , was die folgende Ausnahme ergibt: ImportError: cannot import name 'parse_http_list' . Unten ist der gesamte Traceback, der eine Ausnahme innerhalb der Ausnahme beinhaltet, die versucht, auf eine alte Python-Referenz zurückzugreifen.

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'

Hilfreichster Kommentar

Bitte benennen Sie Ihre Datei von http.py in etwas anderes um, sonst kollidiert sie mit dem http-Modul aus der stdlib.

Alle 5 Kommentare

Bitte geben Sie ein Beispiel an, um dies zu reproduzieren.

Bei Verwendung von Python 3.5.2 schlägt dieser Absatz in werkzeug/http.py wiederholt fehl.

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

Außerdem wird sich das obige Skript auf einer tieferen Ebene beschweren, ohne dass try/except vorhanden ist, was mich auf eine mögliche Änderung der internen APIs mit urllib aufmerksam gemacht hat. Wenn es hilft, habe ich das Problem ursprünglich gefunden, als ich Flask 0.12 verwendet und das folgende Skript ausgeführt hat.

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()

Bitte benennen Sie Ihre Datei von http.py in etwas anderes um, sonst kollidiert sie mit dem http-Modul aus der stdlib.

Anscheinend kann Python nicht zwischen gleichnamigen Skripten unterscheiden, also hat es mich auf eine wilde Jagd durch diese Bibliotheken geschickt... Ich schätze die Hilfe.

Bitte benennen Sie Ihre Datei von http.py in etwas anderes um, sonst kollidiert sie mit dem http-Modul aus der stdlib.

Ich bin neu in Python, also mache ich auch den gleichen Fehler ....

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

Nessphoro picture Nessphoro  ·  6Kommentare

ngaya-ll picture ngaya-ll  ·  8Kommentare

masklinn picture masklinn  ·  11Kommentare

davidism picture davidism  ·  9Kommentare

lepture picture lepture  ·  6Kommentare