宝塔用户_uekapp 发表于 2025-10-23 07:29:11

【已解答】宝塔面板添加Python项目安装python环境失败

为了能快速了解并处理您的问题,请提供以下基础信息:面板、插件版本:9.6.0
系统版本:CentOS 7
问题描述:宝塔面板添加Python项目安装python环境失败未找到本地记录文件,将向云端请求Python版本数据,这可能需要一段时间,请稍等
正在检查网络状况......
解析错误
正在检查网络状况......
Traceback (most recent call last):
File "/www/server/panel/class/projectModel/btpyvm.py", line 528, in _get_versions_by_cloud
    stable_go_versions = self.__parser_xml(data_txt)
File "/www/server/panel/class/projectModel/btpyvm.py", line 565, in __parser_xml
    root = cElementTree.fromstring(data_txt)
File "/www/server/panel/pyenv/lib/python3.7/xml/etree/ElementTree.py", line 1315, in XML
    parser.feed(text)
File "<string>", line None
xml.etree.ElementTree.ParseError: mismatched tag: line 7, column 2
未找到对应版本
Traceback (most recent call last):
File "/www/server/panel/class/projectModel/btpyvm.py", line 866, in <module>
    pyvm.cmd_install(_v, extended)
File "/www/server/panel/class/projectModel/btpyvm.py", line 719, in cmd_install
    _, err = py_v.install(self.base_url, extended_args)
AttributeError: 'str' object has no attribute 'install'

相关截图(日志、错误):

宝塔用_2f7c 发表于 2025-10-24 19:39:59

/www/server/panel/class/projectModel/btpyvm.py
顶部导入bs4
from bs4 import BeautifulSoup

替换解析代码
def __parser_xml(self, data_txt: str) -> List:
      res_list = []
      
      # data_txt = data_txt.replace("<hr>", "")
   
      last_2 = {
            "data": (2, 0, 0),
            "version": None,
      }

      # root = cElementTree.fromstring(data_txt)
      # for data in root.findall("./body/pre/a"):
      #   v_str = data.text
      #   if v_str.startswith("2."):
      #         ver = v_str.strip("/")
      #         t_version = parse_version_to_list(ver)
      #         if t_version > last_2["data"]:
      #             last_2["data"] = t_version
      #             last_2["version"] = ver
      #         continue
      #   if v_str.startswith("3."):
      #         p_v = PythonVersion(v_str.strip("/"))
      #         res_list.append(p_v)
      #         continue

      soup = BeautifulSoup(data_txt, 'html.parser')
      links = soup.find_all('a')
      for link in links:
            v_str = link.text
            ifv_str.startswith("2."):
                ver = v_str.strip("/")
                t_version = parse_version_to_list(ver)
                if t_version > last_2["data"]:
                  last_2["data"] = t_version
                  last_2["version"] = ver
                continue
            elif v_str.startswith("3."):
                p_v = PythonVersion(v_str.strip("/"))
                res_list.append(p_v)
                continue
            
      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

阿珂 发表于 2025-10-23 14:41:25

修复面板至最新版,重新下载

宝塔用_2f7c 发表于 2025-10-24 03:37:00

阿珂 发表于 2025-10-23 14:41
修复面板至最新版,重新下载

已经最新版本而且是刚安装的,我也是这样,貌似解析华为python版本列表无法解析xml

宝塔用户_uekapp 发表于 2025-10-26 17:39:58

阿珂 发表于 2025-10-23 14:41
修复面板至最新版,重新下载

修复之后还是不行

阿珂 发表于 2025-10-30 17:56:40

面板需更新至最新版
页: [1]
查看完整版本: 【已解答】宝塔面板添加Python项目安装python环境失败