私は自分のDjangoプロジェクトを新しいmacOS Catalinaで実行し、問題なく実行されました。
oh_my_zshをインストールしてから、次のエラーでクラッシュするのと同じプロジェクトを実行しようとしました。 oh_my_zshをアンインストールして再試行しましたが、うまくいきませんでした。
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.
私は同じ問題に遭遇し、手動でリンクするのが少し不快に感じました。
簡単に問題を解決できました
brew install openssl
export DYLD_LIBRARY_PATH=/usr/local/opt/openssl/lib:$DYLD_LIBRARY_PATH
その行を.zshrcに追加しました。
編集: この質問 によると、DYLD_FALLBACK_LIBRARY_PATH
よりもDYLD_LIBRARY_PATH
の方が適している場合があります。
注意:私はセキュリティの専門家ではありません。このソリューションは暗号ライブラリを混乱させます!
あなたの問題はzshやoh-my-zshに起因するとは思わない。私の推測では、MacOS 10.15でインストールされた一部の暗号ライブラリは、Homebrewのpython3
インストールと互換性がありません。
これが私の問題を修正したものです
# 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
私の状況:
brew install python
pip3
はSIGABRT
で失敗していましたシステムエラーレポートのヘッダー:
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.
私にとっては、Pythonの暗号化パッケージを再インストールするだけで十分でした。
pip uninstall cryptography
pip install cryptography
@ bixel、@ Juro Oravec、@ 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
このように、少なくとも理論的には、opensslを更新するとき、dylibは常に最新バージョンを指します。 /usr/local/opt/openssl
は、実際には/usr/local/Cellar/openssl/Cellar/openssl/1.0.2t
(brewによってインストールされたopensslのバージョン)へのリンクです。
問題が発生する理由は実際にはbrewによって説明されています:
opensslはkegのみです。つまり、Appleは独自のTLSおよび暗号ライブラリを優先してOpenSSLの使用を廃止したため、/ usr/localにシンボリックリンクされていません。
brew link openssl
を実行しようとしています:
警告:macOS提供のソフトウェアのリンクを拒否:openssl PATHでopensslを最初に使用する必要がある場合:echo 'export PATH = "/ usr/local/opt/openssl/bin:$ PATH"' >>〜/ .bash_profile
コンパイラーがopensslを見つけるには、次の設定が必要になる場合があります。export LDFLAGS = "-L/usr/local/opt/openssl/lib" export CPPFLAGS = "-I/usr/local/opt/openssl/include"
Pkg-configでopensslを見つけるには、次のように設定する必要があります。export PKG_CONFIG_PATH = "/ usr/local/opt/openssl/lib/pkgconfig"
したがって、基本的には手動でリンクする必要があります。
これからのr.xuan Apple Dev thread は、エラーの回避策のステップを特定しましたInvalid dylib load. Clients should not load the unversioned libcrypto dylib as it does not have a stable ABI.
libssl.dylib
およびlibcrypto.dylib
リンク/usr/local/lib
Homebrewによるopenssl
のインストールからのlibsへのリンク。
新しいライブラリを取得
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/
古いものをバックアップします
4)cd /usr/local/lib
5)mv libssl.dylib libssl_bak.dylib
6)mv libcrypto.dylib libcrypto_bak.dylib
新しいリンクを作成します
7) Sudo ln -s libssl.1.0.0.dylib libssl.dylib
8)Sudo ln -s libcrypto.1.0.0.dylib libcrypto.dylib
cryptographyのようないくつかの依存関係の使用である必要があります
解決:
cd your-site-packages-path/
vim ./asn1crypto/_int.py
この行を見つけます。それを削除し、すべてがOKです
# from ._perf._big_num_ctypes import libcrypto
これが私の問題です
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.
ansible
でも同様の問題が発生していました。原因は_asn1crypto
_で、問題は すでに修正済み です。
私の解決策は、手動で削除し、pip
を使用して再インストールすることでした:
rm -r /usr/local/lib/python2.7/site-packages/asn1crypto*
_。これにより、pip
は問題なく機能しました。pip install asn1crypto
_をインストールした_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
_
[〜#〜]注[〜#〜]:python
を実行すると、_asn1crypto
_が原因かどうかを確認できます冗長モードで、例えばpython -v $(which ansible)
。私の場合、いくつかの_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)
_
DevMate からKevlarを使用している場合は、「libcrypto.dylibのバージョンによって引き起こされるmacOS Catalinaのクラッシュを修正」した4.3.1にアップグレードします。
上記の回答に従うために、libssl.dylibファイルをリンクしたかったが、以下のような場所は見つかりませんでした:
/usr/local/Cellar/openssl/1.0.2t/lib/
ただし、@ bixelによる承認済みの回答により、以下の場所にファイルが見つかりました
/usr/local/opt/openssl/lib
そしてそれは私のために働いた。
ctypes.cdll
を/usr/lib/libcrypto.dylib
で開くためにPython 3.7
を使用していたときにも同じ問題が発生しました。ただし、dylib
はPython 2.7
で開くことができます。
最新のopenssl
とbrew install
をインストールしてから、環境変数を設定し、上記の提案どおりにリンクを作成しましたが、問題はありませんでした。
数時間掘り下げた後、回避策のソリューションを見つけました。
次のようにlibcrypto.X.dylib
に/usr
が見つかりました、
/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
まず、/usr/lib
の代わりに、次のものを使用しました。
os.environ['DYLD_FALLBACK_LIBRARY_PATH'] = '/usr/local/opt/openssl/lib'
ロードすることはできましたが、一部のAPIが欠落していました。
AttributeError: dlsym(0x..., ECDH_OpenSSL): symbol not found
スクリプトパスに/usr/lib/libcrypto.X.dylib
のリンクを作成しました。
ln -s /usr/lib/libcrypto.X.dylib lib/libcrypto.dylib
次に、DYLD_FALLBACK_LIBRARY_PATH
へのパスを追加します
os.environ['DYLD_FALLBACK_LIBRARY_PATH'] = 'lib' # It should be a absolute path
とうとう動いた。
試してください:
python3 -m pip install oscrypto
私のために働いた!
Homebrewの問題のようです。やった brew reinstall python3
そしてそれは働いた。