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
相关产品推荐
相关产品推荐

