一个人的闲言碎语

dr0v

blog.drov.com.cn
一个人碎碎念。
About Me
A lazy security employee.

2021年9月23日星期四


# Mac With Apple M1 安装 airtest 失败解决方案

项目需要,需要利用 airtest 进行一些Android 模拟器的脚本测试,所以需要 pip install airtest. (关键的其实是 pocoui ,最终追踪下来,安装这个模块时出错的。)

然后就理所当然的出错了:

```
pip install airtest

.......

Error: Failed building wheel for numpy
```

网上找了各种问题原因,归结如下:

1. python 版本过高导致,最好使用稳定的3.8
2. python 版本过高导致,最好使用稳定的3.6
3. wheel 有问题,重装 wheel

按照1 的方案,安装了 python 3.8。 在 mac 下切换版本(homebrew 安装的环境下):

```
arch -arm64 brew install python@3.8

brew unlink python@3.9 && brew link --overwrite python@3.8

```

此时,pip3 就是 ``` python3.8 -m pip ``` 了。

但,安装依然报同样的错。

然后参考方案2,准备安装 python3.6 / python 3.7 。 结果,系统不支持。

```
arch -arm64 pip3 install python@3.7                                                                                    
python@3.7: The x86_64 architecture is required for this software.
Error: python@3.7: An unsatisfied requirement failed this build.
```

game over .  (由此可以看出,明显是版本问题导致无法正常 pip 安装模块,跟 wheel 也就没啥关系了)

## 峰回路转的'绿色版'解决方案

这下没办法了,所以思考了一下,装个 airtestIDE 先手工一下,然后脚本处理好了,再同步到服务器进行调试。

安装 airtestIDE 过程省略。

发现 airtestIDE 使用一切正常,那是不是他的依赖都是 OK 的、预编译好了的?python 能不能直接用他的模块呢?

于是,打开包内容 -> Contents -> MacOS ,发现真有关键的 poco 模块,于是,将其中关键的 poco 、 airtest、airtest_selenium 模块都直接复制到 python 的 site-packages 中。

再运行,补充一些需要的模块,大功告成!

```
get free device number: 3
deviceList: ['emulator-5554-0', 'emulator-5554-1', 'emulator-5554-2']
[pkg:]:getEmu cnt: 1 left_time:120
[pkg:]:error adb:0 out :List of devices attached

    ... ...    
    ... ...    
    ... ...    

```
Categories: , ,