Scrapy - AttributeError: type object 'SettingsFrame' has no attribute 'ENABLE_CONNECT_PROTOCOL'

Scrapy - AttributeError: type object 'SettingsFrame' has no attribute 'ENABLE_CONNECT_PROTOCOL'

我在 Windows 上使用 Conda 环境。 刚安装完scrapy,我就在试用了。我在启动 scrapy shell 时遇到问题。 我输入scrapy shell "url"。我收到此错误消息:

(first_scrapy) C:\Users\jjang\Documents\GitHub\python_scrapy>scrapy shell "https://www.tutorialspoint.com/python/tk_entry.htm"
Traceback (most recent call last):
  File "C:\Users\jjang\anaconda3\envs\first_scrapy\Scripts\scrapy-script.py", line 6, in <module>
    from scrapy.cmdline import execute
  File "C:\Users\jjang\anaconda3\envs\first_scrapy\lib\site-packages\scrapy\__init__.py", line 12, in <module>
    from scrapy.spiders import Spider
  File "C:\Users\jjang\anaconda3\envs\first_scrapy\lib\site-packages\scrapy\spiders\__init__.py", line 11, in <module>
    from scrapy.http import Request
  File "C:\Users\jjang\anaconda3\envs\first_scrapy\lib\site-packages\scrapy\http\__init__.py", line 11, in <module>
    from scrapy.http.request.form import FormRequest
  File "C:\Users\jjang\anaconda3\envs\first_scrapy\lib\site-packages\scrapy\http\request\form.py", line 16, in <module>
    from scrapy.utils.response import get_base_url
  File "C:\Users\jjang\anaconda3\envs\first_scrapy\lib\site-packages\scrapy\utils\response.py", line 14, in <module>
    from twisted.web import http
  File "C:\Users\jjang\anaconda3\envs\first_scrapy\lib\site-packages\twisted\web\http.py", line 185, in <module>
    from twisted.web._http2 import H2Connection
  File "C:\Users\jjang\anaconda3\envs\first_scrapy\lib\site-packages\twisted\web\_http2.py", line 27, in <module>
    import h2.connection  # type: ignore[import]
  File "C:\Users\jjang\anaconda3\envs\first_scrapy\lib\site-packages\h2\connection.py", line 23, in <module>
    from .events import (
  File "C:\Users\jjang\anaconda3\envs\first_scrapy\lib\site-packages\h2\events.py", line 14, in <module>
    from .settings import ChangedSetting, _setting_code_from_int
  File "C:\Users\jjang\anaconda3\envs\first_scrapy\lib\site-packages\h2\settings.py", line 25, in <module>
    class SettingCodes(enum.IntEnum):
  File "C:\Users\jjang\anaconda3\envs\first_scrapy\lib\site-packages\h2\settings.py", line 60, in SettingCodes
    ENABLE_CONNECT_PROTOCOL = SettingsFrame.ENABLE_CONNECT_PROTOCOL
AttributeError: type object 'SettingsFrame' has no attribute 'ENABLE_CONNECT_PROTOCOL'

有人向我解释这个错误吗?我在 SOF 看到一些帖子,很多人建议升级版本。遇到这种情况,我该怎么办?

我也遇到过。

首先尝试升级 h2,conda install -c conda-forge h2, 或者用 pip

pip uninstall h2
pip install h2==3.2.0

如果它不起作用,您可以这样做(这样做需要您自担风险,但这是我所做的并且它起作用了):

打开“C:\Users\jjang\anaconda3\envs\first_scrapy\lib\site-packages\hyperframe\frame.py”

在“class SettingsFrame(Frame)”中添加以下行:

ENABLE_CONNECT_PROTOCOL = 0x01

保存文件并重新启动 IDE/terminal。