7 votos

M1 mac mini: Python reporta `mach-o, pero arquitectura equivocada`.

Hemos alquilado un Mac Mini M1 en un proveedor de Cloud y hemos instalado python3 vía homebrew.

Sin embargo, al instalar los paquetes, vemos muchos errores que informan de desajustes en la arquitectura.

pip3 install <something>

/private/var/folders/s9/94x83w5x5gv1tkw6pgcvy55r0000gn/T/pip-install-6zb2vf39/rchitect_2226cf31d84b4fbeb14084a47e566d22/.eggs/cffi-1.14.5-py3.9-macosx-11.4-arm64.egg/_cffi_backend.cpython-39-darwin.so: mach-o, but wrong architecture

Otras bibliotecas CLI funcionan perfectamente con sus instalaciones (nativas) de brew. Rosetta ni siquiera está instalado.

No estoy muy metido en Python y buscar en la web no me ayudó, por lo que sospecho que algo no estándar podría estar pasando aquí.

brew info python3
python@3.9: stable 3.9.5 (bottled)
Interpreted, interactive, object-oriented programming language
https://www.python.org/
/opt/homebrew/Cellar/python@3.9/3.9.5 (3,108 files, 55.5MB) *
  Poured from bottle on 2021-05-27 at 20:07:29
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/python@3.9.rb
License: Python-2.0

which python3
/opt/homebrew/bin/python3

¿Alguien tiene alguna idea de lo que puede estar pasando?

Editar : Estas son las arquitecturas de los archivos

file /opt/homebrew/bin/python3
/opt/homebrew/bin/python3: Mach-O 64-bit executable arm64

file /private/var/folders/s9/94x83w5x5gv1tkw6pgcvy55r0000gn/T/pip-install-nq_w_w15/rchitect_e1cd9cd747dc44e2a7f69885db619a02/.eggs/cffi-1.14.5-py3.9-macosx-11-arm64.egg/_cffi_backend.cpython-39-darwin.so: Mach-O 64-bit bundle x86_64

El huevo descargado de cffi es la arquitectura equivocada. ¿Por qué ocurre esto y quién puede ser el malo aquí?

5voto

Marc Wilson Puntos 146

Pypi no proporciona un paquete ARM para este software para MacOS. Sólo X86_64.

¿Cómo lo sé?

De hecho, fui y miré.

https://pypi.org/project/cffi/#files

Edición (122621): Observo que a partir de 101321, parece haber una compilación ARM de cffi en PyPy.

1voto

Max Puntos 37

Tuve algunos problemas similares con regex y typed_ast . Estaba ejecutando todo mi código desde un terminal Rosetta y había instalado Python desde brew, mediante "arch -arm64 brew install".

Mi solución de chapuza fue desinstalar las librerías ofensivas y volver a instalarlas con: arch -arm64 pip install typed_ast --no-binary :all:

En la práctica, probablemente es mejor ser más coherente con el uso de Rosetta o no para todo, pero esto funcionó para mí.

1voto

yann-h Puntos 111

Tuve un problema similar al intentar instalar dask. Lo resolví siguiendo estos pasos:

1/ Comprueba qué versión de Python tienes instalada (tengo : mac os Python 2.x y 3.x, anaconda 3.8, brew 3.9):

python -m pipenv.help

Se han encontrado instalaciones de Python:

  • 3.9.6 : /opt/homebrew/bin/python3
  • 3.9.6 : /opt/homebrew/bin/python3.9
  • 3.8.8 : /opt/anaconda3/bin/python3
  • 3.8.8 : /opt/anaconda3/bin/python3.8
  • 3.8.2 : /usr/bin/python3
  • 2.7.16 : /usr/bin/python2
  • 2.7.16 : /usr/bin/python2.7

2/ Utilice pipenv para crear un entorno virtual 3.8:

pipenv install --python '/opt/anaconda3/bin/python3'
pipenv install 'dask[complete]'

Nota: por defecto, pipenv estaba utilizando la versión 3.9 brew de Python para crear el entorno virtual - que causó el problema.

3/ Activar el entorno virtual y utilizarlo:

pipenv shell

0voto

benwiggy Puntos 8

Si utiliza el programa de Apple python3 Entonces viene como un Binario Universal, así que puedes ejecutarlo en Rosetta hasta que los módulos se hayan puesto al día.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X