“/Usr/lib/libcrypto.dylib” ile MacOS 10.15 Beta sürümünde (19A582a) Python kilitleniyor


47

Django projemi yeni macOS Catalina ile çalıştırdım ve iyi çalışıyordum.
Ben oh_my_zsh yüklü sonra aşağıdaki hataları ile çöküyor aynı projeyi çalıştırmak için çalıştı. Ben oh_my_zsh kaldırdım ve tekrar denedim ama işe yaramadı.

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.

Eğer bir sanal ortamdaysanız: Benim için ven'in (tam) sıfırlanması (silinmesi ve tüm bağımlılıklarla yeniden oluşturulması vb.)
Basti

Yanıtlar:


94

Ben sadece aynı sorunla karşılaştı ve etrafında elle şeyler bağlamak için biraz rahatsız hissettim.

Sorunu basitçe çözebildim

  1. Homsrew ile openssl kurulumu:
    brew install openssl
  2. DYLD_LIBRARY_PATH aracılığıyla openssl'den dinamik kütüphanelere doğru işaret:
    export DYLD_LIBRARY_PATH=/usr/local/opt/openssl/lib:$DYLD_LIBRARY_PATH

Bu satırı az önce .zshrc'ye ekledim.

Düzenleme: Bu soruya göre , kullanımı DYLD_FALLBACK_LIBRARY_PATHtercih edilebilir DYLD_LIBRARY_PATH.

Edit 2: Aşağıdaki yorumda belirtildiği gibi, bu muhtemelen kabul edilen cevap olmalıdır. Paketi yeniden yükleyin cryptography.


19
sistemi berbat değil
Jingshao Chen

Bu komut satırında da benim için çalıştı, ancak komut dosyaları için işe yaramadı. Eksik bir şey olabilir mi?
ErnestoE

2
Açıkladığınız export DYLD_FALLBACK_LIBRARY_PATH=/usr/local/opt/openssl/libgibi çalışır onaylayabilir . Bahşiş için teşekkürler!
Luke Hoersten

1
Bu, işleri işler hale getirmek için harikadır ancak tamamen çözmez. Python kullanmanız gereken bazı crontab işlerim var ve hepsinin bu env kurulumuna sahip olduğundan emin olmak istemiyorum. Aşağıdaki @ Andrei'nin çözümünü seviyorum. En son openssl libs ne olursa olsun semboller kurar, böylece gelecekte yükseltildiğinde bağlantılar da olacaktır. stackoverflow.com/a/58596931/142318
Chris

1
Herkes bundan önce @tonyStarks yanıtını denemelisiniz, bu sadece sizin için kolay bir kaldırma ve yeniden yükleme olabilir
Micheal C Wallas

38

Dikkat: Ben bir güvenlik uzmanı değilim ve bu çözüm kripto kütüphaneleriyle uğraşıyor!

Sorununuzun zsh veya oh-my-zsh kaynaklı olduğunu düşünmüyorum. En iyi tahminim: MacOS 10.15 ile yüklenen bazı kripto kütüphaneleri Homebrew's ile uyumsuzpython3 kurulumuyla .

İşte benim için sorunu çözen şey

# 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

Bağlam durumum:

  • Son zamanlarda MacOS 10.15 sürümüne geçirildi
  • Homebrew ile kurulan python / pip kullanıyorum: brew install python
  • pip3 ile başarısız oldu SIGABRT

Sistem hata raporu başlığı:

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.

29

Benim için Python'un şifreleme paketini yeniden yüklemek yeterliydi.

pip uninstall cryptography
pip install cryptography

1
Benim için çalıştı. Benim durumumda ansible yürütülmedi sonra virtualenv son sürümüne güncelleme.
hshan

1
İşe yaradı! Teşekkürler! Benim için pip uninstall cryptographydeğil remove.
fzwo

Bu benim için de düzeltildi. Teşekkürler!
andrewdcato

Bu mükemmel çalıştı - teşekkürler!
Sherm4n

Evet, bu hile yaptı. Teşekkürler!
Steffen Funke

17

@Bixel, @Juro Oravec & @honkaboy cevaplarının bir kombinasyonunu tercih ederim:

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

Bu şekilde, en azından teoride, güncelleme açıldığında boyalar her zaman en son sürümlere işaret edecektir. /usr/local/opt/opensslaslında bir bağlantı /usr/local/Cellar/openssl/Cellar/openssl/1.0.2t(demlemek tarafından kurulan openssl sürümü).

Sorunun gerçekleşmesinin nedeni aslında demlemekle açıklanıyor:

openssl yalnızca keg'tir, yani Apple kendi TLS ve kripto kütüphaneleri lehine OpenSSL kullanımını onaylamamış olduğu için / usr / local'a bağlanmamıştır.

Koşmaya çalışıyor brew link openssl:

Uyarı: macOS tarafından sağlanan yazılımı bağlamayı reddetme: openssl PATH çalıştırmanızda öncelikle openssl olması gerekiyorsa: echo 'export PATH = "/ usr / local / opt / openssl / bin: $ PATH"' >> ~ / .bash_profile

Derleyiciler openssl bulmak için ayarlamanız gerekebilir: export LDFLAGS = "- L / usr / local / opt / openssl / lib" export CPPFLAGS = "- I / usr / local / opt / openssl / include"

Pkg-config dosyasının openssl'i bulması için ayarlamanız gerekebilir: export PKG_CONFIG_PATH = "/ usr / local / opt / openssl / lib / pkgconfig"

Yani, temel olarak onları manuel olarak bağlamanız gerekir.


15

Bu Apple Dev iş parçacığından gelen r.xuan, Homebrew'un kurulumundaki kütüphanelere bağlantılar ile bağlantıları ve bağlantıları Invalid dylib load. Clients should not load the unversioned libcrypto dylib as it does not have a stable ABI. değiştirerek hata için bir geçici çözüm adımlarını belirledi .libssl.dyliblibcrypto.dylib/usr/local/libopenssl

Adımlar:

Taze kütüphaneler edinin

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/

Eskileri yedekle

4) cd /usr/local/lib

5) mv libssl.dylib libssl_bak.dylib

6) mv libcrypto.dylib libcrypto_bak.dylib

Yeni bağlantılar oluştur

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

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


Bu benim için Catalina 10.15.4 üzerinde çalıştı, ama /usr/local/Cellar/openssl@1.1 vardı ve eşdeğer dosyaları kullandım. X.1.0.0.dylib dosyalarını kullanarak pip3 yine de çöktü.
Andrew Delos Reyes

4

Kriptografi gibi bazı bağımlılıkların kullanımı olmalı

Çözüm:

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

bu satırı bul; sil ve her şey yolunda

# from ._perf._big_num_ctypes import libcrypto

İşte benim sorunum

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.

4

İle benzer sorunlar görüyordum ansible. Suçlu, asn1cryptosorun zaten çözüldü .

Benim çözüm elle kaldırmak ve ile yeniden oldu pip:

  1. rm -r /usr/local/lib/python2.7/site-packages/asn1crypto*. Bu pipsorunsuz çalışmasına izin verdi.
  2. pip install asn1crypto, yüklenen 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

NOT : Ayrıntılı modda asn1cryptoçalışarak suçlu olup olmadığını kontrol edebilirsiniz python, örn python -v $(which ansible). Benim durumumda bazı asn1cryptoilgili ithalat yaparken çöktü :

# /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)

İlgili: https://github.com/Homebrew/homebrew-core/issues/44996


Benim için çalışan bu. Kafesleri, ansible kullanan kökler tarafından kullanıyordum. rm -rCevapta listelenen komutu yaptım , sonra trellis/.trellis/virtualenvdizindeki python ortamımı kaldırdım , sonra trellis-cli kullanarak trellis initbir python ortamı yeniden yarattım ve pip ile bağımlılıklar yükledim.
robrecord

Bu benim için çalıştı :)
smartworld-dm

0

DevMate'den Kevlar kullanıyorsanız , "libcrypto.dylib sürümünden kaynaklanan macOS Catalina çökmesi düzeltildi" olan 4.3.1 sürümüne yükseltin.


0

Homebrew meselesi gibi görünüyor. Yaptım brew reinstall python3ve işe yaradı.



0

Yukarıda belirtilen cevapları takip etmek için libssl.dylib dosyasını bağlamak istedim, ancak aşağıdaki gibi bir konum bulunamadı:

/usr/local/Cellar/openssl/1.0.2t/lib/

Ancak @bixel tarafından kabul edilen cevap dosyayı aşağıdaki konumda buldu

/usr/local/opt/openssl/lib

ve benim için çalıştı.


0

Ben kullanıyordum aynı sorunu buluştu ctypes.cdllaçmaya /usr/lib/libcrypto.dylibile Python 3.7. Ancak dylibaçılabilir OLABİLİRPython 2.7 .

En son opensslile yükledim brew install, sonra ortam değişkenlerini ayarladım ve yukarıda önerdikleri gibi bağlantılar oluşturdum, HİÇBİR ŞEY iyi oldu.

Birkaç saatlik kazma işleminden sonra geçici bir çözüm buldum.

Bazılarını buldum libcrypto.X.dylibiçinde /usr, şu şekilde

/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

İlk olarak, /usr/libonun yerine onun yerine onu takip ettim .

os.environ['DYLD_FALLBACK_LIBRARY_PATH'] = '/usr/local/opt/openssl/lib'

Yüklenebilir ama bazı apisler eksikti,

AttributeError: dlsym(0x..., ECDH_OpenSSL): symbol not found

/usr/lib/libcrypto.X.dylibKomut dosyası yolum için bir bağlantı oluşturdum .

ln -s /usr/lib/libcrypto.X.dylib lib/libcrypto.dylib

Sonra yolunu DYLD_FALLBACK_LIBRARY_PATH

os.environ['DYLD_FALLBACK_LIBRARY_PATH'] = 'lib' # It should be a absolute path

Sonunda işe yaradı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.