提交修复 (稳定版) v10.0.2-LTSpython环境安装bug
面板版本:宝塔linux面板 (稳定版) v10.0.2-LTS
系统版本:centos 7
浏览器版本:Google Chrome 146.0.7680.80
问题现象:安装不了新的python版本
修改位置:/www/server/panel/class/projectModel/btpyvm.py
__parser_xml方法和cmd_install方法
--------------------------------------------
def __parser_xml(self, data_txt: str) -> List: """ 修复:改用字符串匹配解析Python版本列表,避免XML解析错误 """ res_list = [] last_2 = { "data": (2, 0, 0), "version": None, } # 匹配Python版本目录(如 3.12.3/) version_pattern = re.compile(r'href="(\d+\.\d+\.\d+)/"') versions = version_pattern.findall(data_txt) # 处理2.x版本 for ver in versions: if ver.startswith("2."): t_version = parse_version_to_list(ver) if t_version > last_2["data"]: last_2["data"] = t_version last_2["version"] = ver elif ver.startswith("3."): p_v = PythonVersion(ver) res_list.append(p_v) # 添加最新的2.x版本 if last_2["version"]: res_list.insert(0, PythonVersion(last_2["version"])) # 排序并过滤不稳定版本 res_list.sort(key=lambda x: x.ver_t) need_remove = [] for ver in res_list[::-1]: if not self.test_last_version_is_stable(ver): need_remove.append(ver) else: break for ver in need_remove: res_list.remove(ver) return res_list
--------------------------------------------
def cmd_install(self, version, extended_args='') -> None: py_v = self._get_version(version) # 新增:判断py_v是否为有效对象 if isinstance(py_v, str): print(py_v, file=sys.stderr) return if self.base_url is None: print("网络连接错误", file=sys.stderr) return _, err = py_v.install(self.base_url, extended_args) if err: print(err, file=sys.stderr)
修复后:可以安装新的python版本
页:
[1]