Werkzeug: ImportError provoquant une exception lors de la gestion d'une exception

Créé le 22 déc. 2016  ·  5Commentaires  ·  Source: pallets/werkzeug

Après un peu de débogage, j'ai réduit l'erreur suivante à werkzeug/http.py#L26 , ce qui donne l'exception suivante : ImportError: cannot import name 'parse_http_list' . Vous trouverez ci-dessous l'intégralité du retraçage, qui implique une exception à l'intérieur de l'exception tentant de revenir à une ancienne référence 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'

Commentaire le plus utile

Veuillez renommer votre fichier http.py en autre chose, sinon il entre en conflit avec le module http de stdlib.

Tous les 5 commentaires

Veuillez fournir un exemple pour reproduire ceci.

En utilisant Python 3.5.2, ce paragraphe de werkzeug/http.py échouera à plusieurs reprises.

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

De plus, le script ci-dessus se plaindra à un niveau plus profond sans le try/except présent, ce qui m'a alerté d'un possible changement dans les API internes avec urllib. Si cela peut aider, j'ai trouvé le problème à l'origine lors de l'utilisation de Flask 0.12 et de l'exécution du script suivant.

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

Veuillez renommer votre fichier http.py en autre chose, sinon il entre en conflit avec le module http de stdlib.

Apparemment, Python ne peut pas différencier les scripts du même nom, alors cela m'a envoyé dans une course folle à travers ces bibliothèques... J'apprécie l'aide.

Veuillez renommer votre fichier http.py en autre chose, sinon il entre en conflit avec le module http de stdlib.

Je suis nouveau en Python, donc je fais la même erreur aussi....

Cette page vous a été utile?
0 / 5 - 0 notes