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 se está bloqueando 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.
9 respuestas
Me encontré con el mismo problema y me sentí un poco incómodo de vincular manualmente las cosas.
Pude resolver el problema simplemente
- Instalación de openssl a través de homebrew:
brew install openssl
- 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.
Editar: de acuerdo con esta pregunta, el uso de DYLD_FALLBACK_LIBRARY_PATH
podría ser preferible a DYLD_LIBRARY_PATH
.
Debe ser el uso de algunas dependencias como 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.
Estaba viendo problemas similares con ansible
. El culpable fue asn1crypto
, y el problema ha sido ya solucionado.
Mi solución fue eliminarlo manualmente y reinstalarlo con pip
:
rm -r /usr/local/lib/python2.7/site-packages/asn1crypto*
. Esto permitió quepip
funcionara sin problemas.pip install asn1crypto
, que instaló1.2.0
:
Found existing installation: asn1crypto 0.24.0
Uninstalling asn1crypto-0.24.0:
Successfully uninstalled asn1crypto-0.24.0
Successfully installed asn1crypto-1.2.0
NOTA : puede verificar si asn1crypto
es el culpable ejecutando python
en modo detallado, p. python -v $(which ansible)
. En mi caso, se bloqueó al hacer algunas importaciones relacionadas con asn1crypto
:
# /usr/local/lib/python2.7/site-packages/asn1crypto/_perf/_big_num_ctypes.pyc matches /usr/local/lib/python2.7/site-packages/asn1crypto/_perf/_big_num_ctypes.py
import asn1crypto._perf._big_num_ctypes # precompiled from /usr/local/lib/python2.7/site-packages/asn1crypto/_perf/_big_num_ctypes.pyc
[1] 59247 abort python -v $(which ansible)
Relacionado: https://github.com/Homebrew/homebrew-core/issues/44996
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.
reemplazando los enlaces libssl.dylib
y libcrypto.dylib
en /usr/local/lib
con enlaces a libs desde la instalación de Homebrew de openssl
.
Los pasos son:
Obtenga libs nuevas
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 las antiguas
4) cd /usr/local/lib
5) mv libssl.dylib libssl_bak.dylib
6) mv libcrypto.dylib libcrypto_bak.dylib
Crear nuevos enlaces
7) sudo ln -s libssl.1.0.0.dylib libssl.dylib
8) sudo ln -s libcrypto.1.0.0.dylib libcrypto.dylib
Parece que fue un problema de Homebrew. Lo hice brew reinstall python3
y funcionó.
Advertencia: no soy un experto en seguridad, ¡y esta solución se mete con las bibliotecas criptográficas!
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 actualizada a MacOS 10.15
- Uso python / pip instalado a través de homebrew:
brew install python
pip3
estaba fallando conSIGABRT
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.
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 realmente 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 a favor de sus propias bibliotecas TLS y criptográficas.
Intentando ejecutar brew link openssl
:
Advertencia: se niega 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 vincularlas manualmente.
Para mí fue suficiente reinstalar el paquete de criptografía de Python.
pip remove cryptography
pip install cryptography
Si está utilizando Kevlar de DevMate, actualice a 4.3.1, que "solucionó el bloqueo de macOS Catalina causado por la versión de libcrypto.dylib ".
Preguntas relacionadas
Preguntas vinculadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.