python oh-my-zsh libcrypto macos-catalina

Python se bloquea en MacOS 10.15 Beta(19A582a) con "/usr/lib/libcrypto.dylib"



oh-my-zsh macos-catalina (5)

Acabo de encontrar el mismo problema y me sentí un poco incómodo al vincular manualmente las cosas.

Pude resolver el problema simplemente

  1. Instalación de openssl a través de homebrew:

    brew install openssl

  2. Apuntando hacia las bibliotecas dinámicas desde openssl a través de DYLD_LIBRARY_PATH:

    export DYLD_LIBRARY_PATH=/usr/local/opt/openssl/lib:$DYLD_LIBRARY_PATH

Acabo de agregar esa línea a mi .zshrc.

Ejecuté mi proyecto Django con la nueva MacOS Catalina y estaba funcionando bien.
Instalé oh_my_zsh y luego traté de ejecutar el mismo proyecto que está fallando con los siguientes errores. Desinstalé oh_my_zsh e intenté nuevamente pero no funcionó.

Path: /usr/local/Cellar/python/3.7.4_1/Frameworks/Python.framework/Versions/3.7/Resources/Python.app/Contents/MacOS/Python Identifier: Python Version: 3.7.4 (3.7.4) Code Type: X86-64 (Native) Parent Process: Python [7526] Responsible: Terminal [7510] User ID: 501 Date/Time: 2019-10-07 20:59:20.675 +0530 OS Version: Mac OS X 10.15 (19A582a) Report Version: 12 Anonymous UUID: CB7F20F6-96C0-4F63-9EC5-AFF3E0989687 Time Awake Since Boot: 3000 seconds System Integrity Protection: enabled Crashed Thread: 0 Dispatch queue: com.apple.main-thread Exception Type: EXC_CRASH (SIGABRT) Exception Codes: 0x0000000000000000, 0x0000000000000000 Exception Note: EXC_CORPSE_NOTIFY Application Specific Information: /usr/lib/libcrypto.dylib abort() called Invalid dylib load. Clients should not load the unversioned libcrypto dylib as it does not have a stable ABI.


Debe ser el uso de algunas dependencias como la criptografía.

Solución:

cd your-site-packages-path/ vim ./asn1crypto/_int.py

encuentra esta línea; bórralo y todo está bien

# from ._perf._big_num_ctypes import libcrypto

Aqui esta mi problema

Process: Python [85179] Path: /usr/local/Cellar/python/3.7.4_1/Frameworks/Python.framework/Versions/3.7/Resources/Python.app/Contents/MacOS/Python Identifier: Python Version: 3.7.4 (3.7.4) Code Type: X86-64 (Native) Parent Process: ??? [85161] Responsible: iTerm2 [11711] User ID: 501 Date/Time: 2019-10-07 23:00:25.143 +0800 OS Version: Mac OS X 10.15 (19A582a) Report Version: 12 Bridge OS Version: 3.0 (14Y906) Anonymous UUID: 32C73ADD-1291-FA0E-DC02-48D539674325 Time Awake Since Boot: 42000 seconds System Integrity Protection: enabled Crashed Thread: 0 Dispatch queue: com.apple.main-thread Exception Type: EXC_CRASH (SIGABRT) Exception Codes: 0x0000000000000000, 0x0000000000000000 Exception Note: EXC_CORPSE_NOTIFY Application Specific Information: /usr/lib/libcrypto.dylib abort() called Invalid dylib load. Clients should not load the unversioned libcrypto dylib as it does not have a stable ABI.


Prefiero una combinación de @bixel, @Juro Oravec y @honkaboy responde:

brew install openssl cd /usr/local/lib sudo ln -s /usr/local/opt/openssl/lib/libssl.dylib libssl.dylib sudo ln -s /usr/local/opt/openssl/lib/libcrypto.dylib libcrypto.dylib

De esta manera, al menos en teoría, al actualizar openssl, los dylibs siempre apuntarán a las últimas versiones. /usr/local/opt/openssl es en realidad un enlace a /usr/local/Cellar/openssl/Cellar/openssl/1.0.2t (la versión de openssl instalada por brew).

La razón por la que ocurre el problema se explica en realidad por brew:

openssl es solo de barril, lo que significa que no se vinculó en / usr / local, porque Apple ha desaprobado el uso de OpenSSL en favor de sus propias bibliotecas TLS y criptográficas.

Intentando ejecutar brew link openssl :

Advertencia: Negarse a vincular el software proporcionado por macOS: openssl Si necesita tener openssl primero en su ejecución PATH: echo ''export PATH = "/ usr / local / opt / openssl / bin: $ PATH"'' >> ~ / .bash_profile

Para que los compiladores encuentren openssl, es posible que deba configurar: export LDFLAGS = "- L / usr / local / opt / openssl / lib" export CPPFLAGS = "- I / usr / local / opt / openssl / include"

Para que pkg-config encuentre openssl, es posible que deba configurar: export PKG_CONFIG_PATH = "/ usr / local / opt / openssl / lib / pkgconfig"

Entonces, básicamente necesitas vincularlos manualmente.


r.xuan de este hilo de Apple Dev identificó los pasos de una solución alternativa para el error Invalid dylib load. Clients should not load the unversioned libcrypto dylib as it does not have a stable ABI. Invalid dylib load. Clients should not load the unversioned libcrypto dylib as it does not have a stable ABI. reemplazando los enlaces libssl.dylib y libcrypto.dylib en /usr/local/lib con enlaces a libs desde la instalación de openssl de Homebrew.

Los pasos son:

Obtenga libs frescas

1) brew update && brew upgrade && brew install openssl

2) cd /usr/local/Cellar/openssl/1.0.2t/lib

3) sudo cp libssl.1.0.0.dylib libcrypto.1.0.0.dylib /usr/local/lib/

Copia de seguridad de los viejos

4) cd /usr/local/lib

5) mv libssl.dylib libssl_bak.dylib

6) mv libcrypto.dylib libcrypto_bak.dylib

Crea nuevos enlaces

7) sudo ln -s libssl.1.0.0.dylib libssl.dylib

8) sudo ln -s libcrypto.1.0.0.dylib libcrypto.dylib


Advertencia: no soy un experto en seguridad, ¡y esta solución se mete con las bibliotecas de cifrado!

No creo que tu problema se deba a zsh u oh-my-zsh. Mi mejor conjetura: algunas bibliotecas criptográficas instaladas con MacOS 10.15 son incompatibles con la instalación de python3 de Homebrew.

Esto es lo que solucionó el problema para mí.

# Install openssl via homebrew. # Note: According to homebrew, "openssl is keg-only, which means it was # not symlinked into /usr/local, because Apple has deprecated use of # OpenSSL in favor of its own TLS and crypto libraries." brew install openssl # Symlink those versions into /usr/local/lib, which gets Python to dynamically # link against those instead of the version in /usr/lib/. # Got the idea from https://forums.developer.apple.com/thread/119429 cd /usr/local/lib sudo ln -s /usr/local/Cellar/openssl/1.0.2t/lib/libssl.1.0.0.dylib libssl.dylib sudo ln -s /usr/local/Cellar/openssl/1.0.2t/lib/libcrypto.1.0.0.dylib libcrypto.dylib

Mi situación para el contexto:

  • Recientemente actualizado a MacOS 10.15
  • Yo uso python / pip instalado a través de homebrew: brew install python
  • pip3 estaba fallando con SIGABRT

Encabezado del informe de error del sistema:

Process: Python [52429] Path: /usr/local/Cellar/python/3.7.4_1/Frameworks/Python.framework/Versions/3.7/Resources/Python.app/Contents/MacOS/Python Identifier: Python Version: 3.7.4 (3.7.4) Code Type: X86-64 (Native) Parent Process: zsh [43309] Responsible: iTerm2 [2316] User ID: 501 Date/Time: 2019-10-09 09:52:18.148 -0700 OS Version: Mac OS X 10.15 (19A583) Report Version: 12 Bridge OS Version: 4.0 (17P572) Anonymous UUID: Sleep/Wake UUID: Time Awake Since Boot: 9900 seconds Time Since Wake: 7300 seconds System Integrity Protection: enabled Crashed Thread: 0 Dispatch queue: com.apple.main-thread Exception Type: EXC_CRASH (SIGABRT) Exception Codes: 0x0000000000000000, 0x0000000000000000 Exception Note: EXC_CORPSE_NOTIFY Application Specific Information: /usr/lib/libcrypto.dylib abort() called Invalid dylib load. Clients should not load the unversioned libcrypto dylib as it does not have a stable ABI.