嵌入式平台需要下载python的包,但是网络受限,无法下载包,此时该如何处理:
比如我当前需要安装riscv平台上的 opencv-contrib-python 包,但是嵌入式平台网速太慢,下载失败,如何通过服务器下载所需的包并且正常安装?
大致分为三步:
- 查看嵌入式平台的平台信息
- 去有网络的服务器上下载对应嵌入式平台的离线包
- 将离线包拷贝到嵌入式设备 ,并进行安装
1. 查看所需要安装的离线平台信息
以下命令运行在嵌入式设备上:
** 查看python版本 **
$ python3 --version
Python 3.10.12
** 平台信息 **
$ uname -m
riscv64
$ arch
riscv64
2. 在服务器上下载离线包
$ pip download opencv-contrib-python --only-binary=:all: --platform linux_riscv64 --python-version 3.10.12
ERROR: Could not find a version that satisfies the requirement opencv-contrib-python (from versions: none)
ERROR: No matching distribution found for opencv-contrib-python
说明官方没有预编译该平台的opencv包,需要通过源码编译。
pip download opencv-contrib-python==4.10.0.84 --no-binary :all:
$ pip download opencv-contrib-python --platform linux_riscv64 --python-version 3.10.12
参数说明:
<opencv-contrib-python>:需要下载的Python包名称。
--only-binary=:all::只下载二进制包(即whl文件)。
--wheel:确保下载的是wheel格式的包。 有的版本会报错,去掉该选项即可。
--platform <platform_tag>:指定目标平台标签,例如 manylinux1_x86_64、win_amd64、macosx_10_9_x86_64 等。
--python-version <python_version>:指定Python版本,例如 3.7。
3. 安装离线包
python -m pip install --no-index --find-links . <package_name>
--no-index:禁止pip查询在线索引。
--find-links .:告诉pip在当前目录下查找whl文件进行安装。
确保所有依赖项也一同下载并在同一目录下,以确保安装顺利进行。如果存在复杂的依赖关系,可能需要先分析好依赖顺序再依次安装。
如果是源码包,安装命令如下:
pip install /path/to/opencv_contrib_python-4.10.0.84.tar.gz