一、简介
最近,在基于w800开发板环境下的学习过程中,由于在Windows下使用联盛VSCode+SDK,或者win下的命令行ide环境中的编译速度实在不尽如人意,于是笔者就开始转战Ubuntu下的联盛德提供的Linux环境配置,但是由于笔者之前搞了其他的环境,于是就用到了pyenv来管理python版本。但是,由于这个pyenv的python与Ubuntu系统自带的python3有时会冲突,有些时候使用SDK会默认使用系统自带的python导致编译不过,在此记录一些解决方法。
WM IoT SDK 编程指南 --- WinnerMicro 在线文档
二、相关设置
部分命令:
cpp
## 查看帮助文档
pyenv
## 查看某个命令帮助文档
pyenv install --help
## 查看版本
pyenv version
## 检查 Python 是否正常运行
python -c "import sys; print(sys.executable)"
## 查看已安装的 Python 版本
pyenv versions
## 查看当前使用的 Python 版本
pyenv version
## 查看所有可用的 Python 版
pyenv install --list
## 安装指定版本
pyenv install 3.9.1
## 验证
python --version
## 卸载指定版本
pyenv uninstall 3.9.1
## 全局指定 Python 版本(影响所有项目)
pyenv global 3.9.1
## 局部指定 Python 版本(仅影响当前项目目录),指定后在当前项目目录内创建 .python-version 文件,保存版本信息
## 优先级高于 global
pyenv local 3.9.1
## 会话级指定 Python 版本(影响所有项目)
pyenv shell 3.9.1
## 查看 python 的安装目录
pyenv which python
## 重新生成 pyenv 的 shims 目录中的可执行文件
pyenv rehash
2.1 对于pyenv的下载缓慢问题
2.1.1 常用方法
(1)查看pyenv已经安装的版本

(2)列出所有可以安装的版本,有普通的python,还有anaconda、jython
python
pyenv install --list
(3)另辟蹊径,按住ctrl键点击这个网址打开去手动进入网页下载
有些时候会卡在这里


(4)找到你安装的pyenv的本体的文件夹所在的地方,在/pyenv/下创建一个cache文件夹,这其实就是缓存文件夹,将你在网页下载的python包放在cache文件夹下,然后,后面就在使用命令行
python
pyenv install 版本号
安装在网页下载的python包对应的版本,实际上它pyenv内部会检出cache文件夹内的python包缓存,就不用再使用http拉取了,会直接解压cache文件夹内的python包,然后导入到你的pyenv内部

(5)放入cache文件夹

(5)输入指令重新安装,如果要指定修改镜像源需要.pyenv添加文件,但是笔者用的其他方式安装的pyenv就不用这个方法了,可以看看其他文章
bash
pyenv install 版本号

注:可以指定镜像网站下载到cache文件夹
bash
#wget https://mirrors.huaweicloud.com/python/${v}/Python-${v}.tar.xz -P ~/.pyenv/cache/
wget https://mirrors.huaweicloud.com/python/3.9.0/Python-3.9.0.tar.xz -P ~/.pyenv/cache/
2.2 对于Ubuntu的命令环境下的WM IoT SDK
Linux 搭建命令行编译环境 --- WinnerMicro 在线文档
根据文档的步骤一步步部署就可以了,但是其中,有些需要注意的地方,在这里会指出来。
2.2.1 根据2.1.1来,pyenv安装python3.8.10
其他的正常使用apt/apt-get安装

注:这里使用的apt安装的工具就不用添加环境变量了
同时,激活一下变成全局的配置
bash
pyenv global 版本号

2.2.2 由上一步安装了pyenv的python3.8.10,然后,我们的目标是使用pyenv的python3.8.10,所以要指定使用pyenv的python3.8.10来安装这个SDK运行需要的python3.8.10的依赖工具环境。全局的pyenv的python3.8.10的配置后面说。

bash
#requirements.txt里是WM SDK需要的有些依赖工具包
/home/zky/Pyenv/pyenv/versions/3.8.10/bin/python -m pip install --user --break-system-packages -r /home/wm/wm_iot_sdk/tools/wm/requirements.txt

bash
sudo apt-get install python-tk
2.2.3 将pyenv的python3.8.10配置为全局,这样子SDK的wm.py就不会调用ubuntu的默认的系统python3,需要编写~/.bashrc里面添加环境变量路径(像windows的path一样)
(1)向.bashrc里添加
使用笔记本打开或者vim打开.bashrc编辑
bash
#设置 WM IoT SDK 路径(替换为你的SDK实际路径)这个SDK作为Linux里的命令行环境
#vscode的wmsdk插件可以使用其他SDK
#你的SDK实际存放路径
export WM_IOT_SDK_PATH=/home/zky/SoftwaresHub/wm/wm_iot_sdk_v2_4/wm_iot_sdk
# 将 wm.py 工具添加到环境变量
export PATH=$WM_IOT_SDK_PATH/tools/wm:$PATH
#pyenv python 路径
export PYENV_ROOT="$HOME/Pyenv/pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
# 如果你的shell是bash,请启用下面的命令
if [ -d "$PYENV_ROOT/shims" ]; then
export PATH="$PYENV_ROOT/shims:$PATH"
fi
# 初始化pyenv(对于bash shell)
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
export PATH=/home/zky/Pyenv/pyenv/shims/python:$PATH
(2)同时,还有2个工具的环境变量
bash
#ccache工具提升编译速度 可能对于系统文件下的.ccache没有读写权限
export CCACHE_DIR=$HOME/.ccache
#export CCACHE_DIR=~/.ccache
#csky-elfabiv2-tools-x86_64-minilibc-20210423
export PATH=/home/zky/SoftwaresHub/wm/tools/csky-elfabiv2-tools-x86_64-minilibc-20210423/bin:$PATH
调试工具需要单独配置,这里暂时不演示了
T-Head_Debugger_Server_User_Guide_ZH-CN.pdf
(3)保存编辑内容,并重启.bashrc
bash
source ~/.bashrc
然后就可以查看这个全局的python,而不是系统的/usr/bin/python

(4)最好在命令环境下的sdk里wm.py脚本的第1行指定一下pyenv的python3.8.10

(5)缺模块就自己加,最好显示指定用pyenv的python安装py工具什么的

参考链接:
python多版本管理器--pyenv更换下载源_pyenv换源-CSDN博客
【Ubuntu】安装使用pyenv - Python版本管理_ubuntu安装pyenv-CSDN博客
【Pyenv 更换国内源】_pyenv 国内源-CSDN博客
2.3 对于Ubuntu下的vscode的wm_iot_sdk的扩展配置

(1)出现缺少模块tomlkit,但是,我是用pyenv的python3.8.10安装过了

(2)可能就是调用的是系统默认的python3,如下图:

(3)pyenv的python3.8.10修改为全局环境,就编译成功了
