J'ai exécuté mon projet Django avec le nouveau macOS Catalina et je fonctionnais bien.
J'ai installé oh_my_zsh puis j'ai essayé d'exécuter le même projet qu'il plante avec les erreurs suivantes. J'ai désinstallé oh_my_zsh et réessayé mais cela n'a pas fonctionné.
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.
Je viens de rencontrer le même problème et je me sentais un peu mal à l'aise de lier manuellement les choses.
J'ai pu résoudre le problème simplement
brew install openssl
export DYLD_LIBRARY_PATH=/usr/local/opt/openssl/lib:$DYLD_LIBRARY_PATH
Je viens d'ajouter cette ligne à mon .zshrc.
Edit: Selon cette question , l'utilisation de DYLD_FALLBACK_LIBRARY_PATH
pourrait être préférable à DYLD_LIBRARY_PATH
.
Attention: je ne suis pas un expert en sécurité, et cette solution gâche les crypto-bibliothèques!
Je ne pense pas que votre problème découle de zsh ou oh-my-zsh. Ma meilleure supposition: certaines bibliothèques de chiffrement installées avec MacOS 10.15 sont incompatibles avec l'installation de python3
De Homebrew.
Voici ce qui a résolu le problème pour moi
# 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
Ma situation pour le contexte:
brew install python
pip3
A échoué avec SIGABRT
En-tête du rapport d'erreur système:
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.
Pour moi, il suffisait de réinstaller le paquet de cryptographie de Python.
pip uninstall cryptography
pip install cryptography
Je préfère une combinaison de @bixel, @Juro Oravec et @honkaboy:
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 cette façon, du moins en théorie, lors de la mise à jour d'OpenSL, les dylibs pointeront toujours vers les dernières versions. /usr/local/opt/openssl
est en fait un lien vers /usr/local/Cellar/openssl/Cellar/openssl/1.0.2t
(la version de openssl installée par brew).
La raison pour laquelle le problème se produit est en fait expliquée par brew:
openssl est uniquement keg, ce qui signifie qu'il n'était pas lié à/usr/local, car Apple a déconseillé l'utilisation d'OpenSSL au profit de ses propres bibliothèques TLS et crypto.
Essayer d'exécuter brew link openssl
:
Avertissement: Refuser de lier un logiciel fourni par macOS: openssl Si vous devez avoir d'abord openssl dans votre exécution PATH: echo 'export PATH = "/ usr/local/opt/openssl/bin: $ PATH"' >> ~/.bash_profile
Pour que les compilateurs trouvent openssl, vous devrez peut-être définir: export LDFLAGS = "- L/usr/local/opt/openssl/lib" export CPPFLAGS = "- I/usr/local/opt/openssl/include"
Pour que pkg-config trouve openssl, vous devrez peut-être définir: export PKG_CONFIG_PATH = "/ usr/local/opt/openssl/lib/pkgconfig"
Donc, fondamentalement, vous devez les lier manuellement.
r.xuan de ce Apple Dev thread a identifié les étapes d'une solution de contournement pour l'erreur Invalid dylib load. Clients should not load the unversioned libcrypto dylib as it does not have a stable ABI.
en remplaçant le libssl.dylib
et libcrypto.dylib
liens dans /usr/local/lib
avec des liens vers les bibliothèques de l'installation de Homebrew de openssl
.
Obtenez de nouvelles bibliothèques
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/
Sauvegardez les anciens
4) cd /usr/local/lib
5) mv libssl.dylib libssl_bak.dylib
6) mv libcrypto.dylib libcrypto_bak.dylib
Créer de nouveaux liens
7) Sudo ln -s libssl.1.0.0.dylib libssl.dylib
8) Sudo ln -s libcrypto.1.0.0.dylib libcrypto.dylib
Cela doit être l'utilisation de certaines dépendances comme cryptographie
Solution:
cd your-site-packages-path/
vim ./asn1crypto/_int.py
trouver cette ligne; supprimez-le et tout va bien
# from ._perf._big_num_ctypes import libcrypto
Voici mon problème
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.
Je voyais des problèmes similaires avec ansible
. Le coupable était asn1crypto
, Et le problème a été déjà corrigé .
Ma solution était de le supprimer manuellement et de le réinstaller avec pip
:
rm -r /usr/local/lib/python2.7/site-packages/asn1crypto*
. Cela a permis à pip
de fonctionner sans problème.pip install asn1crypto
, Qui a installé 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
[~ # ~] note [~ # ~] : Vous pouvez vérifier si asn1crypto
est le coupable en exécutant python
en mode verbeux, par exemple python -v $(which ansible)
. Dans mon cas, il s'est écrasé lors de certaines importations liées à 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)
Connexes: https://github.com/Homebrew/homebrew-core/issues/44996
Si vous utilisez Kevlar à partir de DevMate , passez à 4.3.1, qui "Correction d'un crash de macOS Catalina provoqué par la version de libcrypto.dylib".
Pour suivre les réponses mentionnées ci-dessus, je voulais lier le fichier libssl.dylib mais il n'y a aucun emplacement comme ci-dessous:
/usr/local/Cellar/openssl/1.0.2t/lib/
Cependant, comme la réponse acceptée par @bixel a trouvé le fichier à l'emplacement ci-dessous
/usr/local/opt/openssl/lib
et cela a fonctionné pour moi.
J'ai rencontré le même problème lorsque j'utilisais ctypes.cdll
ouvrir /usr/lib/libcrypto.dylib
avec Python 3.7
. Cependant, dylib
POURRAIT être ouvert avec Python 2.7
.
J'ai installé la dernière openssl
avec brew install
, puis définissez les variables d'environnement et créé des liens comme ils l'ont suggéré ci-dessus, RIEN de bien ne s'est produit.
Après plusieurs heures de creusage, j'ai trouvé une solution de contournement.
J'ai trouvé quelques libcrypto.X.dylib
dans /usr
comme suit,
/usr/lib/libcrypto.dylib
/usr/lib/libcrypto.0.9.7.dylib
/usr/lib/libcrypto.0.9.8.dylib
/usr/lib/libcrypto.35.dylib
/usr/lib/libcrypto.41.dylib
/usr/lib/libcrypto.42.dylib
/usr/lib/libcrypto.44.dylib
/usr/local/opt/openssl/lib/libcrypto.1.1.dylib
/usr/local/opt/openssl/lib/libcrypto.dylib
Tout d'abord, j'ai utilisé celui suivi pour remplacer celui dans /usr/lib
au lieu.
os.environ['DYLD_FALLBACK_LIBRARY_PATH'] = '/usr/local/opt/openssl/lib'
Il pouvait être chargé mais certains apis manquaient,
AttributeError: dlsym(0x..., ECDH_OpenSSL): symbol not found
J'ai créé un lien pour /usr/lib/libcrypto.X.dylib
dans mon chemin de script.
ln -s /usr/lib/libcrypto.X.dylib lib/libcrypto.dylib
Ajoutez ensuite le chemin d'accès à DYLD_FALLBACK_LIBRARY_PATH
os.environ['DYLD_FALLBACK_LIBRARY_PATH'] = 'lib' # It should be a absolute path
Enfin, cela a fonctionné.
Essayer:
python3 -m pip install oscrypto
A travaillé pour moi!
On dirait que c'était un problème Homebrew. J'ai fait brew reinstall python3
et cela a fonctionné.