繁体   English   中英

MacOS M1 系统被 Python package 检测为 ARM,即使我使用的是 Rosetta

[英]MacOS M1 system is detected as ARM by Python package even though I'm using Rosetta

我在带有 M1(Apple ARM 架构)的 Macbook 上,我尝试使用layoutparser库运行以下 Python 代码,该库间接使用pycocotools

import layoutparser as lp
lp.Detectron2LayoutModel()

我收到了错误:

[...]
ImportError: 
dlopen([...]/.venv/lib/python3.9/site-packages/pycocotools/_mask.cpython-39-darwin.so, 0x0002): 
tried: 
'[...]/.venv/lib/python3.9/site-packages/pycocotools/_mask.cpython-39-darwin.so' 
(mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e')), 
'/usr/local/lib/_mask.cpython-39-darwin.so' (no such file), 
'/usr/lib/_mask.cpython-39-darwin.so' (no such file)

对我来说,关键信息似乎是[...] is an incompatible architecture (have 'x86_64', need 'arm64e') [...] 确实,我用的是苹果ARM架构,有时候有些软件不支持。 这通常通过使用模拟 Intel-x64 架构的 Rosetta 来解决。 所以我用 Rosetta ( arch -x86_64 zsh ) 启动一个终端,创建一个新的虚拟环境,重新安装依赖项,然后尝试再次运行代码......

...我收到了与没有 Rosetta 的情况相同的错误:

[...] is an incompatible architecture (have 'x86_64', need 'arm64e') [...]

我已经仔细检查了 Rosetta 是否真的被激活:

> uname -m
x86_64

罗塞塔似乎在工作。 然而,根据错误消息,它似乎不起作用。

任何想法可能是 Rosetta 或图书馆或其他任何问题,以及我如何尝试修复它?

Charles Duffy在评论中解释了问题,谢谢!

当我查看Python中的平台时,确实是ARM:

> python -c 'import platform; print(platform.platform())'
macOS-12.0.1-arm64-i386-64bit

所以我一直在为 ARM 使用 Python 安装。

现在我从 Rosetta 终端安装了brewpython3 ,并使用新安装的 Python 启动了一个新的虚拟环境,这修复了它。

这篇文章对我有所帮助。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM