Werkzeug: Versi 1.0.0 menghapus kode yang sebelumnya tidak digunakan lagi

Dibuat pada 6 Feb 2020  ·  22Komentar  ·  Sumber: pallets/werkzeug

Rilis 1.0.0 yang didorong 2 jam yang lalu menerbitkan perubahan yang melanggar untuk orang yang menggunakan labu. Tidak yakin apakah itu efek yang diinginkan dan labu harus menyematkan versinya atau jika perubahan dalam proyek ini perlu terjadi.

Komentar yang paling membantu

Ini adalah pengalaman pengguna yang benar-benar mengerikan. Flask-WTF 0.14.3 dengan perbaikan dirilis beberapa jam yang lalu. Bagaimana kita mendorong rilis yang menghilangkan dukungan ketika sebagian besar ekosistem belum siap untuk ini?

Ini adalah ketiga kalinya pembaruan ke salah satu perpustakaan palet memecahkan kode yang saya jalankan dalam waktu kurang dari enam bulan.

Semua 22 komentar

Silakan posting traceback penuh jika Anda mengalami masalah apapun.

Masalahnya bukan pada Flask, dan Werkzeug tidak akan terus mendukung impor yang tidak digunakan lagi ini. 0.16 telah mengeluarkan peringatan penghentian selama 5 bulan. Gunakan versi tersebut sebagai langkah perantara untuk mengidentifikasi impor apa yang telah berubah.

Anda dapat membantu ekstensi dan proyek lainnya dengan membuka masalah atau mengirimkan PR di proyek yang relevan.

  • Flask-Admin 1.5.5
  • Flask-Babel 1.0
  • Labu-BabelEx 0.9.4
  • flask-restplus (tidak digabung, tidak dirawat demi flask-restx)
  • flask-restx (digabung, belum dirilis)
  • Pengujian Labu 0.8.0
  • Labu-WTF 0.14.3
  • django-ekstensi 2.2.8
  • pytest-flask 0.15.1
Traceback (most recent call last):
  File "/usr/local/bin/pytest", line 8, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.7/site-packages/_pytest/config/__init__.py", line 73, in main
    config = _prepareconfig(args, plugins)
  File "/usr/local/lib/python3.7/site-packages/_pytest/config/__init__.py", line 224, in _prepareconfig
    pluginmanager=pluginmanager, args=args
  File "/usr/local/lib/python3.7/site-packages/pluggy/hooks.py", line 286, in __call__
    return self._hookexec(self, self.get_hookimpls(), kwargs)
  File "/usr/local/lib/python3.7/site-packages/pluggy/manager.py", line 93, in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
  File "/usr/local/lib/python3.7/site-packages/pluggy/manager.py", line 87, in <lambda>
    firstresult=hook.spec.opts.get("firstresult") if hook.spec else False,
  File "/usr/local/lib/python3.7/site-packages/pluggy/callers.py", line 203, in _multicall
    gen.send(outcome)
  File "/usr/local/lib/python3.7/site-packages/_pytest/helpconfig.py", line 89, in pytest_cmdline_parse
    config = outcome.get_result()
  File "/usr/local/lib/python3.7/site-packages/pluggy/callers.py", line 80, in get_result
    raise ex[1].with_traceback(ex[2])
  File "/usr/local/lib/python3.7/site-packages/pluggy/callers.py", line 187, in _multicall
    res = hook_impl.function(*args)
  File "/usr/local/lib/python3.7/site-packages/_pytest/config/__init__.py", line 794, in pytest_cmdline_parse
    self.parse(args)
  File "/usr/local/lib/python3.7/site-packages/_pytest/config/__init__.py", line 1000, in parse
    self._preparse(args, addopts=addopts)
  File "/usr/local/lib/python3.7/site-packages/_pytest/config/__init__.py", line 948, in _preparse
    self.pluginmanager.load_setuptools_entrypoints("pytest11")
  File "/usr/local/lib/python3.7/site-packages/pluggy/manager.py", line 299, in load_setuptools_entrypoints
    plugin = ep.load()
  File "/usr/local/lib/python3.7/site-packages/importlib_metadata/__init__.py", line 94, in load
    module = import_module(match.group('module'))
  File "/usr/local/lib/python3.7/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "/usr/local/lib/python3.7/site-packages/_pytest/assertion/rewrite.py", line 143, in exec_module
    exec(co, module.__dict__)
  File "/usr/local/lib/python3.7/site-packages/pytest_flask/plugin.py", line 14, in <module>
    from werkzeug import cached_property
ImportError: cannot import name 'cached_property' from 'werkzeug' (/usr/local/lib/python3.7/site-packages/werkzeug/__init__.py)

Itu pytest-flask, Anda pasti ingin menghubungi mereka. Sepertinya pytest-flask 0.15.1 telah dirilis dengan perbaikan.

+1, memiliki masalah berikut:
packages/flask_wtf/recaptcha/widgets.py", line 5, in <module> from werkzeug import url_encode ImportError: cannot import name 'url_encode'

Memberi +1 pada rilis terbaru ini juga melanggar ketergantungan kami. Sepertinya ini masalah V1.0.0

```Traceback (panggilan terakhir terakhir):
File "/home/ec2-user/butter_web/venv/lib64/python3.6/site-packages/flask/cli.py", baris 240, di locate_app
__import__(nama_modul)
File "/home/ec2-user/butter_web/butter.py", baris 1, di
dari aplikasi impor aplikasi, db
File "/home/ec2-user/butter_web/app/__init__.py", baris 8, di
dari flask_admin.contrib.sqla impor ModelView
File "/home/ec2-user/butter_web/venv/lib64/python3.6/site-packages/flask_admin/contrib/sqla/__init__.py", baris 2, di
dari .view impor ModelView
File "/home/ec2-user/butter_web/venv/lib64/python3.6/site-packages/flask_admin/contrib/sqla/view.py", baris 19, di
dari flask_admin.model impor BaseModelView
File "/home/ec2-user/butter_web/venv/lib64/python3.6/site-packages/flask_admin/model/__init__.py", baris 2, di
dari .base impor BaseModelView
File "/home/ec2-user/butter_web/venv/lib64/python3.6/site-packages/flask_admin/model/base.py", baris 8, di
dari werkzeug impor secure_filename
ImportError: tidak dapat mengimpor nama 'secure_filename'

Apa solusinya di sini? Mengunci 0.16.1 secara eksplisit tidak menyelesaikan masalah ini.

@tjohnson4 Lihat komentar saya di atas untuk apa yang harus dilakukan. Kesalahan yang Anda posting pada masalah Flask tidak terkait.

Ini adalah pengalaman pengguna yang benar-benar mengerikan. Flask-WTF 0.14.3 dengan perbaikan dirilis beberapa jam yang lalu. Bagaimana kita mendorong rilis yang menghilangkan dukungan ketika sebagian besar ekosistem belum siap untuk ini?

Ini adalah ketiga kalinya pembaruan ke salah satu perpustakaan palet memecahkan kode yang saya jalankan dalam waktu kurang dari enam bulan.

masalah serupa

Traceback (most recent call last):
  File "/usr/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/home/ubuntu/swagger-codegen/samples/server/petstore/flaskConnexion/swagger_server/__main__.py", line 3, in <module>
    import connexion
  File "/home/ubuntu/.local/lib/python3.6/site-packages/connexion/__init__.py", line 3, in <module>
    from .apis import AbstractAPI  # NOQA
  File "/home/ubuntu/.local/lib/python3.6/site-packages/connexion/apis/__init__.py", line 1, in <module>
    from .abstract import AbstractAPI  # NOQA
  File "/home/ubuntu/.local/lib/python3.6/site-packages/connexion/apis/abstract.py", line 14, in <module>
    from ..operation import Operation
  File "/home/ubuntu/.local/lib/python3.6/site-packages/connexion/operation.py", line 7, in <module>
    from .decorators import validation
  File "/home/ubuntu/.local/lib/python3.6/site-packages/connexion/decorators/validation.py", line 9, in <module>
    from werkzeug import FileStorage
ImportError: cannot import name 'FileStorage'

solusi
tambahkan werkzeug == 0.16.1 ke requirements.txt menyelesaikannya untuk saya

Koneksi @Abdelsalam-Abbas memperbaiki impor itu kembali pada Oktober 2019 - mungkin Anda menjalankan versi lama?
https://github.com/zalando/connexion/releases/tag/2.4.0

Jika Flask-Session Anda rusak:

File "/usr/local/lib/python3.8/site-packages/flask_session/__init__.py", line 61, in init_app                                                                                                                                                                                                                               
    app.session_interface = self._get_interface(app)                                                                                                                                                                                                                                                                          
  File "/usr/local/lib/python3.8/site-packages/flask_session/__init__.py", line 90, in _get_interface                                                                                                                                                                                                                         
    session_interface = FileSystemSessionInterface(                                                                                                                                                                                                                                                                           
  File "/usr/local/lib/python3.8/site-packages/flask_session/sessions.py", line 313, in __init__                                                                                                                                                                                                                              
    from werkzeug.contrib.cache import FileSystemCache                                                                                                                                                                                                                                                                        
ModuleNotFoundError: No module named 'werkzeug.contrib'  

Tambahkan werkzeug == 0.16.1 ke requirements.txt menyelesaikannya untuk saya

Jika Flask-RestPlus Anda rusak:

Traceback (most recent call last):
  File "/export/home/hysdsops/sciflo/lib/python3.7/site-packages/flask/cli.py", line 240, in locate_app
    __import__(module_name)
  File "/export/home/hysdsops/sciflo/ops/pele/app.py", line 4, in <module>
    from pele import create_app, db
  File "/export/home/hysdsops/sciflo/ops/pele/pele/__init__.py", line 5, in <module>
    from flask_restplus import apidoc
  File "/export/home/hysdsops/sciflo/lib/python3.7/site-packages/flask_restplus/__init__.py", line 4, in <module>
    from . import fields, reqparse, apidoc, inputs, cors
  File "/export/home/hysdsops/sciflo/lib/python3.7/site-packages/flask_restplus/fields.py", line 17, in <module>
    from werkzeug import cached_property
ImportError: cannot import name 'cached_property' from 'werkzeug' (/export/home/hysdsops/sciflo/lib/python3.7/site-packages/werkzeug/__init__.py)

Tambahkan werkzeug == 0.16.1 ke requirements.txt menyelesaikannya untuk saya.

Adakah yang keberatan memberikan beberapa wawasan tentang mengapa objek permintaan labu saya kembali dari werkzeug 's LocalProxy berasal dari versi yang berbeda dari yang saya miliki secara lokal?

Sejak rilis ini saya mendapatkan kesalahan ini:
File "/Users/lucas/Software/anaconda3/envs/pytest/lib/python3.6/site-packages/flask/json.py", line 251, in jsonify if current_app.config['JSONIFY_PRETTYPRINT_REGULAR'] and not request.is_xhr: File "/Users/lucas/Software/anaconda3/envs/pytest/lib/python3.6/site-packages/werkzeug/local.py", line 347, in __getattr__ return getattr(self._get_current_object(), name) AttributeError: 'Request' object has no attribute 'is_xhr'

is_xhr adalah properti yang telah dihapus di Flask 1.0 , tetapi secara lokal saya telah menginstal 0.12.2 . Untuk memperjelas, saya memposting masalah ini di sini karena bug tidak ada di Flask, melainkan saya hanya bingung mengapa/bagaimana LocalProxy mengembalikan versi yang lebih baru dari aplikasi Flask ini, lalu saya mengharapkan.

@LucasLLC is_xhr tidak pernah secara langsung menjadi bagian dari Flask (apakah ada referensi yang menyatakan itu dihapus di Flask 1.0? Saya tidak bisa melihatnya di changelog) melainkan selalu menjadi Werkzeug API yang diekspos Flask. Dalam hal Werkzeug Anda dapat melihatnya dihapus di 81e10efbf3a83daf09c55cd7cc13ac6c6464d405.

Jika Anda belum melakukannya, saya sarankan untuk menyematkan dependensi Anda dan meningkatkan secara berkala, tugas yang dipermudah dengan alat seperti puisi .

@pgjones idealnya kami melakukan rilis bugfix dari flask 0.12 yang menyematkan werkzeug ke < 1.0.0. Bagaimanapun, ini adalah pin yang buruk di Flask.

Juga ya, API ini secara efektif adalah Flask API dan didokumentasikan seperti itu: https://flask.palletsprojects.com/en/0.12.x/api/#flask.Request.is_xhr

@LucasLLC is_xhr tidak pernah secara langsung menjadi bagian dari Flask (apakah ada referensi yang menyatakan itu dihapus di Flask 1.0? Saya tidak bisa melihatnya di changelog) melainkan selalu menjadi Werkzeug API yang diekspos Flask. Dalam hal Werkzeug Anda dapat melihatnya dihapus di 81e10ef .

Ah, kesalahanku. Saya merujuk peringatan yang dihasilkan dalam metode ini , dan tidak menyadari bahwa itu berasal dari Werkzeug, itu jauh lebih masuk akal.

Jika Anda belum melakukannya, saya sarankan untuk menyematkan dependensi Anda dan meningkatkan secara berkala, tugas yang dipermudah dengan alat seperti puisi .

Terima kasih atas tipnya! Kita akan melihat puisi.

Mengalami masalah saat menginstal odoo12:

    import werkzeug.contrib.fixers
ImportError: No module named 'werkzeug.contrib'

Namun, selesaikan dengan

Werkzeug==0.16.1

kesalahan yang sama terjadi

ModuleNotFoundError: Tidak ada modul bernama 'werkzeug.contrib'

Memiliki masalah yang sama dengan labu

Menyetel Werkzeug==0.16.1 memperbaiki masalah.

```
dari flask_admin.contrib.sqla impor ModelView
File "/usr/local/lib/python3.6/site-packages/flask_admin/contrib/sqla/__init__.py", baris 2, di

dari .view impor ModelView
File "/usr/local/lib/python3.6/site-packages/flask_admin/contrib/sqla/view.py", baris 18, di

dari flask_admin.model impor BaseModelView
File "/usr/local/lib/python3.6/site-packages/flask_admin/model/__init__.py", baris 2, di

dari .base impor BaseModelView
File "/usr/local/lib/python3.6/site-packages/flask_admin/model/base.py", baris 8, di

dari werkzeug impor secure_filename
ImportError: tidak dapat mengimpor nama 'secure_filename'

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

masklinn picture masklinn  ·  11Komentar

ngaya-ll picture ngaya-ll  ·  8Komentar

golf-player picture golf-player  ·  10Komentar

Nessphoro picture Nessphoro  ·  6Komentar

abathur picture abathur  ·  13Komentar