Depois de um pouco de depuração, reduzi o seguinte erro para werkzeug / http.py # L26 , que fornece a seguinte exceção: ImportError: cannot import name 'parse_http_list'
. Abaixo está todo o traceback, que envolve uma exceção dentro da exceção que tenta retroceder para uma referência python antiga.
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'
Por favor, forneça um exemplo para reproduzir isso.
Usando Python 3.5.2, este parágrafo em werkzeug/http.py
irá falhar 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
Além disso, o script acima reclamará em um nível mais profundo sem o try/except
presente, o que me alertou para uma possível mudança nas APIs internas com urllib. Se ajudar, eu encontrei o problema originalmente ao usar o Flask 0.12 e executar o script a seguir.
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()
Renomeie seu arquivo de http.py para outro nome, caso contrário, ele entrará em conflito com o módulo http do stdlib.
Aparentemente, o Python não consegue diferenciar entre scripts com o mesmo nome, então ele me enviou em uma busca louca por essas bibliotecas ... Agradeço a ajuda.
Renomeie seu arquivo de http.py para outro nome, caso contrário, ele entrará em conflito com o módulo http do stdlib.
Sou novo em Python, então também cometi o mesmo erro ...
Comentários muito úteis
Renomeie seu arquivo de http.py para outro nome, caso contrário, ele entrará em conflito com o módulo http do stdlib.