超详细安装并打包arm架构下的python

由于打工那边的电脑是ARM架构的银河麒麟(也是个Linux)而且不能联网,我这边的电脑又是AMD架构的Windows系统。我要给他们配置python,看了许多文章并且问了许多AI,这篇文章我就说一下最舒服的方法吧。

一.安装最新版Docker Desktop

首先,我们要使用Docker Desktop,你只管下载最新版(4.x及以上这样才支持多架构模拟)、安装,不用害怕不会用他,用这个工具我们就能在我们AMD的电脑上模拟ARM的系统了。

这就是下载好的Docker了。

二.启用启用 QEMU 模拟支持

桌面shift+右键打开powershell

 输入:

docker run --rm --privileged multiarch/qemu-user-static --reset -p yes

三.拉取一个ARM镜像并运行

我们知道银河麒麟v4和v10都是基于Ubuntu,因此直接拉取一个arm64架构的Ubuntu镜像:

docker run --rm -it --platform linux/arm64 ubuntu bash

这里我们来详细看看这个命令。

docker run就表示要启动一个容器来运行一个镜像;

--rm表示你退出这个容器时,你就删除这个容器了,白玩了;

-it表示你可以在这个容器里操作(安装东西什么的);

--platform linux/arm64表示使用 ARM64位 架构模拟运行,这很关键;

 ubuntu bash表示我们拉取的镜像,拉一次就有缓存了,下一次再开一个容器他就不再拉取直接使用了。

怎么退出这个容器呢?输入exit或者直接ctrl+D。

如果你不想退出后这个容器就没了,就白玩了,那你就别加--rm,而且给这个容器取个名字,比如我就叫myarm:

docker run -it --platform linux/arm64 --name myarm ubuntu bash

--name表示他是有名字的,名字就是后面这个myarm,有名字还方便我们后续的操作

这样,你下次还想进入这个容器,你直接:

docker start -ai myarm

(其他的Docker操作就不过多赘述,你甚至可以直接再Docker Desktop中进行容器的停止和删除)

 四.python的安装

现在,我们就进入到ARM64的Ubuntu之中了。

 你可以输入:

uname -m

来看看是否是arm64架构的,aarch64就是对的。

1.下载python源码

在我们的宿主机(也就是Windows)上,下载python源码,我就搞个python3.8.10给大家看看。

别选错了嗷,另一个我也不知道是啥。

2.将python源码移动到ARM64容器中

新开一个powershell,右键桌面或者ctrl+x(前面有配图片),输入:

docker cp 'C:\Users\12230\Downloads\Python-3.8.10.tgz' myarm:/root

你注意,你这不能原封不动的抄过去,这里的‘C:\Users\12230\Downloads’是我自己的下载路径,你下载在哪你替换一下。

3.解压python源码

回到我们之前的那个powershell,也就是回到我们的arm64的Ubuntu中,这时候Python-3.8.10.tgz就出现在我们的root里了,我们可以ls看一下:

 没有问题,我这有Python-3.8.10,是因为我解压过了,你没解压要解压一下:

tar -zxvf Python-3.8.10.tgz

解压好你再ls一下,就是我那样了。

4.准备编译环境

为啥不直接在对方那里做我上面的事情呢?就是因为编译环境不好搞,因此我们在联网的环境下把编译环境搞好,然后再在这个环境下把python编译好,直接拿过去就好了。

apt update
apt-get install build-essential zlib1g-dev libbz2-1.0 libssl-dev libncurses5-dev libsqlite3-dev libreadline-dev tk-dev libgdbm-dev libdb5.3 libpcap-dev xz-utils libexpat1-dev liblzma-dev libssl-dev openssl libffi-dev libc6-dev

为啥不需要sudo?因为通过这种方法你不需要sudo,你的权限已经够了。

5.编译python

一步步来,别着急,很慢,可以刷很久的短视频:

cd /root/Python-3.8.10
./configure --prefix=/opt/python3.8 --enable-optimizations
make -j $(nproc)
make altinstall

注意--prefix=/opt/python3.8是为了将这个python安装到/opt/python3.8,这样好打包带走,不然它默认安装到/usr/local里面,不好往外拿。

6.验证python

运行:

/opt/python3.8/bin/python3.8 --version

如果出现:

这样的版本号,就说明安装成功了。

7.安装第三方依赖库

比如numpy、matplotlib等:

/opt/python3.8/bin/python3.8 -m pip install numpy matplotlib

五.python的打包

cd /opt
tar czvf python3.8-portable.tar.gz python3.8

这样你就得到了可以在其他arm64架构下的基于Ubuntu的Linux操作系统中可以直接使用的python包。

想把他拿到你的宿主机(Windows)里面来?

打开一个新的powershell(讲过两次怎么开了):

docker cp myarm:/usr/local/python3.8-portable.tar.gz 'D:\Project'

后面这个路径就是你想要保存到宿主机(Windows)的路径,自己改就行。

这样你就把这个打包好的Python拿到你的宿主机(Windows)上了,把他拷到你要去的离线环境上,用就行了。

六.pyhton-protable的使用

拷到离线环境后,cd到这个包的路径,然后解压这个包:

cd /root
tar -xzf python3.8-portable.tar.gz

假设你拷到了/root中,这样操作即可。

然后:

/root/python3.8-portable/bin/python3.8 main.py

就可以运行你项目的main函数了。

如果觉得麻烦,可以联系我,我直接把我编译好的ARM64架构的Ubuntu操作系统的python3.8的压缩包发给你,但是里面只有numpy和matplotlib。

【免费】ARM64架构的Ubuntu操作系统的python3.8资源-CSDN文库

<think>好的,用户遇到了ProjectEnvsNotAvailableError错误,需要配置platformio.ini文件中的环境。首先,我得回忆一下这个错误通常是什么原因导致的。根据之前的知识,这个错误通常是因为platformio.ini中的环境配置不正确或者缺少必要的参数。用户可能没有正确指定平台、开发板或框架,或者环境名称写错了。 接下来,我需要查看用户提供的引用内容。引用[1]提到platformio.ini是项目的配置文件,位于根目录,属于INI格式文件。引用[2]和[3]给出了具体的配置示例,比如platform、board、framework等参数,还有上传协议和端口的设置。引用[4]则提到了监控波特率的配置。 可能用户的环境配置中遗漏了这些关键参数。比如,如果用户没有指定platform或board,PlatformIO就无法识别环境,导致错误。此外,检查环境名称是否正确,是否有拼写错误,比如env后面的名称是否一致。例如,在引用[3]中,环境名是[env:myenv],如果用户创建了多个环境但名称错误,也会出问题。 解决方案应该包括检查补全必要的配置参数,确保平台、开发板和框架正确。比如,对于ESP32开发,可能需要设置platform为espressif32,board为对应的型号如esp32dev,framework为arduino。同时,用户需要确认是否安装了对应的平台支持包,如果没有安装,PlatformIO可能无法找到环境配置,导致错误。 另外,用户可能需要运行pio pkg update来更新包列表,或者pio platform install来安装缺少的平台。验证配置是否正确可以通过pio run命令来测试,看看是否能正常编译。如果还有问题,检查错误信息,看看是否有更具体的提示,比如缺少的依赖或配置项。 最后,需要提醒用户常见错误的排查,比如路径是否正确,项目结构是否符合要求,以及配置文件的格式是否正确,避免语法错误。比如,INI文件中的节是否正确使用[env:name]格式,参数是否正确拼写等。</think>根据错误信息和引用文档,解决$ProjectEnvsNotAvailableError$需要按以下步骤配置$platformio.ini$: ### 解决方案 1. **基础环境配置** ```ini [env:your_env_name] ; 必须包含有效的环境名称 platform = espressif32 ; 指定硬件平台 board = esp32dev ; 开发板型号 framework = arduino ; 使用Arduino框架 ``` 必须包含$platform$、$board$和$framework$三个核心参数[^1][^3] 2. **添加必要扩展配置** ```ini upload_protocol = espota ; OTA更新协议 upload_port = 192.168.0.255 ; 设备IP地址 monitor_baud = 115200 ; 串口监控波特率[^4] ``` 3. **依赖管理** ```ini lib_deps = ; 库依赖声明 adafruit/Adafruit GFX Library@^1.10.12 adafruit/Adafruit SSD1306@^2.5.7 ``` ### 验证配置 1. 运行`pio pkg update`更新平台索引 2. 执行`pio run`测试编译 3. 使用`pio device list`检查设备连接 ### 常见错误排查 1. **平台未安装**: ```bash pio platform install espressif32 ``` 2. **环境名称冲突**: ```ini [env:development] ; 正确格式 [env:production] ; 多环境配置示例 ``` 3. **路径问题**: - 确保$platformio.ini$在项目根目录 - 避免中文路径和特殊字符 $$注意:所有配置项必须使用全小写格式,参数值根据具体项目需求调整$$[^1]
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值