3

I've tried to install cryptography on my brand new Air M1. But something goes wrong. I already tried some solutions from google but it didn't help.

Environment Details:

  • Python 3.9.1
  • pip 21.0.1
  • macOS BigSur 11.2 Appl1 M1
  • cffi==1.14.5
  • openssl@1.1

Steps to reproduce:

pip3 install cryptography

traceback:

  copying src/cryptography/hazmat/bindings/openssl/binding.py -> build/lib.macosx-11-arm64-3.9/cryptography/hazmat/bindings/openssl
  running egg_info
  writing src/cryptography.egg-info/PKG-INFO
  writing dependency_links to src/cryptography.egg-info/dependency_links.txt
  writing requirements to src/cryptography.egg-info/requires.txt
  writing top-level names to src/cryptography.egg-info/top_level.txt
  reading manifest file 'src/cryptography.egg-info/SOURCES.txt'
  reading manifest template 'MANIFEST.in'
  no previously-included directories found matching 'docs/_build'
  warning: no previously-included files found matching 'vectors'
  warning: no previously-included files matching '*' found under directory 'vectors'
  warning: no previously-included files matching '*' found under directory '.github'
  warning: no previously-included files found matching 'release.py'
  warning: no previously-included files found matching '.coveragerc'
  warning: no previously-included files found matching 'codecov.yml'
  warning: no previously-included files found matching '.readthedocs.yml'
  warning: no previously-included files found matching 'dev-requirements.txt'
  warning: no previously-included files found matching 'tox.ini'
  warning: no previously-included files found matching 'mypy.ini'
  warning: no previously-included files matching '*' found under directory '.zuul.d'
  warning: no previously-included files matching '*' found under directory '.zuul.playbooks'
  writing manifest file 'src/cryptography.egg-info/SOURCES.txt'
  copying src/cryptography/py.typed -> build/lib.macosx-11-arm64-3.9/cryptography
  running build_ext
  generating cffi module 'build/temp.macosx-11-arm64-3.9/_padding.c'
  creating build/temp.macosx-11-arm64-3.9
  generating cffi module 'build/temp.macosx-11-arm64-3.9/_openssl.c'
  running build_rust

      =============================DEBUG ASSISTANCE=============================
      If you are seeing a compilation error please try the following steps to
      successfully install cryptography:
      1) Upgrade to the latest pip and try again. This will fix errors for most
         users. See: https://pip.pypa.io/en/stable/installing/#upgrading-pip
      2) Read https://cryptography.io/en/latest/installation.html for specific
         instructions for your platform.
      3) Check our frequently asked questions for more information:
         https://cryptography.io/en/latest/faq.html
      4) Ensure you have a recent Rust toolchain installed:
         https://cryptography.io/en/latest/installation.html#rust
      5) If you are experiencing issues with Rust for *this release only* you may
         set the environment variable `CRYPTOGRAPHY_DONT_BUILD_RUST=1`.
      =============================DEBUG ASSISTANCE=============================

  error: Can not find Rust compiler
  ----------------------------------------
  ERROR: Failed building wheel for cryptography
Failed to build cryptography
ERROR: Could not build wheels for cryptography which use PEP 517 and cannot be installed directly
Andrzej Sydor
  • 1,373
  • 4
  • 13
  • 28
  • I think as of recently, the python cryptography module requires Rust to compile. This will have substantial benefits in the long term, but the transition is reportedly rather bumpier than it might have been... – Jiří Baum Feb 15 '21 at 09:23
  • So I have to wait for when it will be supported by m1? – Andrei Horbach Feb 15 '21 at 10:30
  • Looks like Rust is now supported on the M1, so it should just be a question of setting it up. I'm not the right person to ask about that, though... – Jiří Baum Feb 15 '21 at 10:46
  • You can try more appropriate solution: https://stackoverflow.com/a/66422219/9521312 – paveldroo Mar 01 '21 at 12:35

2 Answers2

1

Rust currently works on m1 via

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

However you will most likely experience another error after fixing rust.

import _cffi_backend as backend ImportError: dlopen(/private/var/folders/fd/s3rl30nj6790c3p5df6x2_700000gn/T/pip-build-env-w44a7bqz/overlay/lib/python3.x/site-packages/_cffi_backend.cpython-3X-darwin.so, 2): no suitable image found. Did find: /private/var/folders/fd/s3rl30nj6790c3p5df6x2_700000gn/T/pip-build-env-w44a7bqz/overlay/lib/python3.X/site-packages/_cffi_backend.cpython-3X-darwin.so: mach-o, but wrong architecture

The issue is discussed here where it's stated that CFFI maintainers don't support m1 macs: https://github.com/gevent/gevent/issues/1721

1

it works for me after fresh updates.

sudo xcode-select --install.
Thomas
  • 1,823
  • 1
  • 8
  • 24