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

Viewed 627

I am using a Conda environment on Windows. Just after installing scrapy, I am on the trial. And I have a problem in launching scrapy shell. I input scrapy shell "url". And I get this error message:

(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'

Is there someone explain me about this error? I saw some posts in SOF that many peoples recommend to do upgrade the version. In this case, what do I have to do?

1 Answers

Happened to me also.

First try upgrading h2, conda install -c conda-forge h2, or with pip

pip uninstall h2
pip install h2==3.2.0

If it doesn't work you can do this (do this at your own risk, but this is what I did and it worked):

Open "C:\Users\jjang\anaconda3\envs\first_scrapy\lib\site-packages\hyperframe\frame.py"

Inside "class SettingsFrame(Frame)" add the following line:

ENABLE_CONNECT_PROTOCOL = 0x01

frame.py edit

Save the file and restart your IDE/terminal.

Related