Después de un poco de depuración, reduje el siguiente error a ImportError: cannot import name 'parse_http_list'
. A continuación se muestra el rastreo completo, que implica una excepción dentro de la excepción que intenta recurrir a una antigua referencia de 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'
Proporcione un ejemplo para reproducir esto.
Usando Python 3.5.2 este párrafo en werkzeug/http.py
fallará repetidamente.
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
Además, el script anterior se quejará en un nivel más profundo sin el try/except
presente, que me alertó sobre un posible cambio en las API internas con urllib. Si ayuda a alguno, encontré el problema originalmente al usar Flask 0.12 y ejecutar el siguiente script.
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()
Cambie el nombre de su archivo de http.py a otro, de lo contrario chocará con el módulo http de stdlib.
Aparentemente, Python no puede diferenciar entre scripts del mismo nombre, por lo que me envió a una búsqueda inútil a través de estas bibliotecas ... Agradezco la ayuda.
Cambie el nombre de su archivo de http.py a otro, de lo contrario chocará con el módulo http de stdlib.
Soy nuevo en Python, así que también cometo el mismo error ...
Comentario más útil
Cambie el nombre de su archivo de http.py a otro, de lo contrario chocará con el módulo http de stdlib.