Search code examples
pythonpippyopensslpython-cryptography

error: Apple Arm64 ABI requires ffi_prep_cif_var


I have updated my Intel mac to Big Sur v11.0.1 and have a failing dependancy on one of my work projects. I do not use python so am unsure on how to progress with this bug. All of my other pip installs worked without troubles.

So when I run pip3 install pyOpenSSL, it fails on Using cached cryptography-3.2.1.tar.gz with the error:

ERROR: Command errored out with exit status 1:
   command: /<my-project>/venv/bin/python3 /<my-project>/venv/lib/python3.8/site-packages/pip install --ignore-installed --no-user --prefix /private/var/folders/gg/djb6q6054pxf6rzpjg516k9c0000gn/T/pip-build-env-bj2qm41h/overlay --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple -- 'setuptools>=40.6.0' wheel 'cffi>=1.8,!=1.11.3; platform_python_implementation != '"'"'PyPy'"'"''
#error Apple Arm64 ABI requires ffi_prep_cif_var
       ^
c/_cffi_backend.c:6304:9: warning: 'ffi_prep_closure' is deprecated [-Wdeprecated-declarations]
  if (ffi_prep_closure(closure, &cif_descr->cif,
              ^
/usr/local/Cellar/libffi/3.3/include/ffi.h:341:18: note: 'ffi_prep_closure' has been explicitly marked deprecated here
        __attribute__((deprecated))
                       ^
1 warning and 1 error generated.
error: command 'clang' failed with exit status 1

I have seen a few issues in the repos such as this issue and this issue, but as I don't use python or pip often I am not sure what the root bug is or how to fix.

Any suggestions or insights would be greatly appreciated.


Solution

  • To unblock this bug, I have installed python 3.9 using the steps from the offical docs. In my project I then ran the commands.

    # delete my venv folder first
    python3.9 -m venv venv
    pip install -r requirements.txt
    

    All of the requirements (including pyOpenSSL) are now installing and working as expected.

    I still an unable to get this working in python 3.8, so upgraded to 3.9.