Setelah sedikit debugging, saya telah mempersempit kesalahan berikut menjadi werkzeug/http.py#L26 , yang memberikan pengecualian berikut: ImportError: cannot import name 'parse_http_list'
. Di bawah ini adalah seluruh traceback, yang melibatkan pengecualian di dalam pengecualian yang mencoba mundur ke referensi python lama.
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'
Berikan contoh untuk mereproduksi ini.
Menggunakan Python 3.5.2 paragraf ini di werkzeug/http.py
akan gagal berulang kali.
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
Juga, skrip di atas akan mengeluh pada tingkat yang lebih dalam tanpa hadiah try/except
, yang mengingatkan saya tentang kemungkinan perubahan dalam API internal dengan urllib. Jika ada yang membantu, saya menemukan masalah awalnya saat menggunakan Flask 0.12 dan menjalankan skrip berikut.
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()
Silakan ganti nama file Anda dari http.py menjadi sesuatu yang lain, jika tidak maka akan bentrok dengan modul http dari stdlib.
Rupanya Python tidak dapat membedakan antara skrip dengan nama yang sama, jadi itu mengirim saya ke pengejaran angsa liar melalui perpustakaan ini ... Saya menghargai bantuannya.
Silakan ganti nama file Anda dari http.py menjadi sesuatu yang lain, jika tidak maka akan bentrok dengan modul http dari stdlib.
Saya baru di Python, jadi saya mengambil kesalahan yang sama juga....
Komentar yang paling membantu
Silakan ganti nama file Anda dari http.py menjadi sesuatu yang lain, jika tidak maka akan bentrok dengan modul http dari stdlib.