准备软件

确认按照以下步骤进行操作:

注: 该Python应用VisionFive.gpio适用于昉·星光单板计算机昉·星光 2昉·惊鸿-7110 EVB。
  1. 按照《昉·星光 2单板计算机快速参考手册》中的“将OS烧录到Micro-SD”章节,将Debian OS烧录到Micro-SD卡上。
  2. 登录Debian并确保昉·星光 2已联网。有关详细说明,请参阅《昉·星光 2单板计算机快速参考手册》“通过以太网使用SSH”“使用USB转串口转换器”章节。
  3. 在Debian上扩展分区,请参见《昉·星光 2单板计算机快速参考手册》“扩展分区”章节。
  4. 在Debian上执行以下命令以安装并创建Python3虚拟环境:
    sudo apt install python3-venv
    python3 -m venv myvenv
    
    注: 可自定义 "myvenv" 名称。
  5. 昉·星光 2 Debian上执行pip命令,以安装VisionFive.gpio包:
    注: 由于pypi.org官网尚不支持上传RISC-V平台的whl安装包,不能直接执行python3 -m pip install VisionFive.gpio命令在线安装,因此请按照以下步骤安装VisionFive.gpio包。
    1. 执行以下命令,在新创建的虚拟环境中安装依赖包:
      sudo apt install libxml2-dev libxslt-dev 
      source ./myvenv/bin/activate
      python3 -m pip install requests wget bs4
      
    2. 执行以下命令,运行安装脚本Install_VisionFive_gpio.py
      python3 Install_VisionFive_gpio.py
      安装脚本代码如下:
      import requests
      import wget
      import sys
      import os
      from bs4 import BeautifulSoup
      
      def parse_data(link_addr, class_type, key_str):
          req = requests.get(url=link_addr)
          req.encoding = "utf-8"
          html = req.text
          soup = BeautifulSoup(req.text, features="html.parser")
          package_version = soup.find(class_type, class_=key_str)
          dd = package_version.text.strip()
          data = dd.split()
          return data
      
      def parse_link(link_addr, class_type, key_str):
          version_list = []
          req = requests.get(url=link_addr)
          req.encoding = "utf-8"
          html = req.text
          soup = BeautifulSoup(req.text, features="html.parser")
          search_data = soup.find_all(class_type, class_=key_str)
          for i in range(0, len(search_data)):
              search_data[i] = search_data[i].find("a").get("href)
              version_list.append(search_data[i].split("cp")[-1].split("-")[0])
      
          python_version = sys.version
          python_version = python_version.split(".")[0] + python_version.split(".")[1]
      
          for i in range(0, len(search_data)):
              if python_version == version_list[i]:
                  return search_data[i]
      
          return search_data[0]
      
      def get_dl_addr_page():
          link_address = "https://pypi.org/project/VisionFive.gpio/#history"
          key_str = "release version"
          class_key = "p"
          data_get = parse_data(link_address, class_key, key_str)
          latest_version = data_get[0]
          dl_addr_page = "https://pypi.org/project/VisionFive.gpio/{}/#files".format(latest_version)
          return dl_addr_page
      
      def get_dl_addr_of_latest_version(link_addr):
          key_str = "card file card"
          class_key = "div"
          addr_get = parse_link(link_addr, class_key, key_str)
          
          return addr_get
      
      def main():
          dl_addr_p = get_dl_addr_page()
          whl_dl_addr = get_dl_addr_of_latest_version(dl_addr_p)
      
          whl_name = whl_dl_addr.split("/")[-1]
          whl_name_suffix = os.path.splitext(whl_name)[-1]
          whl_name_prefix = os.path.splitext(whl_name)[0]
          whl_name_prefix_no_platform = whl_name_prefix[0: len(whl_name_prefix) - 3]
          new_platform = "linux_riscv64"
      
          rename_whl_name = "{}{}{}".format(whl_name_prefix_no_platform, new_platform, whl_name_suffix)
      
          wget.download(whl_dl_addr, out=rename_whl_name)
      
          os.system("pip install " + rename_whl_name)
          os.system("rm -rf " + rename_whl_name)
      
      if __name__ == '__main__':
          sys.exit(main())
    3. (可选)退出 Python3 虚拟环境。
      deactivate