You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows11下PyScript运行FlightRadarAPI遇SSL模块不可用ImportError

问题:PyScript运行FlightRadarAPI时出现SSL模块不可用错误

在Windows 11系统的Python 3.12环境中,代码在常规Python环境运行FlightRadarAPI完全正常,但通过PyScript(Python与HTML结合工具)运行时,触发以下错误:

ImportError: Can't connect to HTTPS URL because the SSL module is not available.

完整错误栈:

Traceback (most recent call last):
  File "/lib/python311.zip/_pyodide/_base.py", line 499, in eval_code
    .run(globals, locals)
     ^^^^^^^^^^^^^^^^^^^^
  File "/lib/python311.zip/_pyodide/_base.py", line 340, in run
    coroutine = eval(self.code, globals, locals)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<exec>", line 55, in <module>
  File "/lib/python3.11/site-packages/FlightRadar24/api.py", line 309, in get_flights
    response = APIRequest(Core.real_time_flight_tracker_data_url, request_params, Core.json_headers)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/lib/python3.11/site-packages/FlightRadar24/request.py", line 56, in __init__
    self.__response = request_method(url, headers = headers, cookies = cookies, data = data)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/lib/python3.11/site-packages/requests/api.py", line 73, in get
    return request("get", url, params=params, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/lib/python3.11/site-packages/requests/api.py", line 59, in request
    return session.request(method=method, url=url, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/lib/python3.11/site-packages/requests/sessions.py", line 589, in request
    resp = self.send(prep, **send_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/lib/python3.11/site-packages/requests/sessions.py", line 703, in send
    r = adapter.send(request, **kwargs)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/lib/python3.11/site-packages/requests/adapters.py", line 486, in send
    resp = conn.urlopen(
           ^^^^^^^^^^^^^
  File "/lib/python3.11/site-packages/urllib3/connectionpool.py", line 769, in urlopen
    conn = self._get_conn(timeout=pool_timeout)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/lib/python3.11/site-packages/urllib3/connectionpool.py", line 295, in _get_conn
    return conn or self._new_conn()
                   ^^^^^^^^^^^^^^^^
  File "/lib/python3.11/site-packages/urllib3/connectionpool.py", line 1060, in _new_conn
    raise ImportError(
ImportError: Can't connect to HTTPS URL because the SSL module is not available.
解决方案
  • 适配Pyodide网络请求:PyScript基于Pyodide运行,requests库在该环境下的SSL支持受限。可以修改FlightRadarAPI的请求逻辑,改用Pyodide内置的pyodide.http.fetch处理HTTPS请求。示例修改FlightRadar24/request.py:
    from pyodide.http import fetch
    import json
    import asyncio
    
    # 替换原有同步请求逻辑为异步fetch
    class APIRequest:
        def __init__(self, url, params=None, headers=None):
            self.url = url
            self.params = params or {}
            self.headers = headers or {}
            self.response = asyncio.run(self._fetch_data())
    
        async def _fetch_data(self):
            url_with_params = f"{self.url}?{'&'.join([f'{k}={v}' for k, v in self.params.items()])}"
            response = await fetch(url_with_params, headers=self.headers)
            return json.loads(await response.text())
    
  • 显式声明依赖:在PyScript的HTML文件中,确保<py-env>标签包含所有必要依赖:
    <py-env>
      - flightradar24-api
      - requests
      - urllib3
    </py-env>
    
  • 检查官方兼容性:前往FlightRadarAPI的仓库查看是否有PyScript/Pyodide适配方案,若无则提交issue反馈该问题。

内容的提问来源于stack exchange,提问作者Eskimo868

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 22:05:18