Homebrew 升级到 Python 2.7.10_2 导致包失败 'image not found'
Homebrew upgrade to Python 2.7.10_2 causes packages to fail with 'image not found'
使用
更新 Homebrew 之后
brew update
brew upgrade --all
导致 Python 更新到 2.7。10_2,pip(和许多其他脚本)失败并显示
cffi.ffiplatform.VerificationError: importing '/usr/local/lib/python2.7/site-packages/cryptography/_Cryptography_cffi_a269d620xd5c405b7.so': dlopen(/usr/local/lib/python2.7/site-packages/cryptography/_Cryptography_cffi_a269d620xd5c405b7.so, 2): Library not loaded: /usr/local/lib/libssl.1.0.0.dylib
Referenced from: /usr/local/lib/python2.7/site-packages/cryptography/_Cryptography_cffi_a269d620xd5c405b7.so
Reason: image not found
我该怎么做才能恢复或调整我的 Python 配置以使其再次运行? Homebrew 做了什么破坏了它?
Traceback (most recent call last):
File "/usr/local/bin/eb", line 7, in <module>
from ebcli.core.ebcore import main
File "/usr/local/lib/python2.7/site-packages/ebcli/core/ebcore.py", line 43, in <module>
from . import globals, base, io, hooks
File "/usr/local/lib/python2.7/site-packages/ebcli/core/hooks.py", line 20, in <module>
from ..lib import aws
File "/usr/local/lib/python2.7/site-packages/ebcli/lib/aws.py", line 19, in <module>
import botocore.session
File "/usr/local/lib/python2.7/site-packages/ebcli/bundled/botocore/session.py", line 27, in <module>
import botocore.credentials
File "/usr/local/lib/python2.7/site-packages/ebcli/bundled/botocore/credentials.py", line 30, in <module>
from botocore.utils import InstanceMetadataFetcher, parse_key_val_file
File "/usr/local/lib/python2.7/site-packages/ebcli/bundled/botocore/utils.py", line 25, in <module>
from botocore.vendored import requests
File "/usr/local/lib/python2.7/site-packages/ebcli/bundled/botocore/vendored/requests/__init__.py", line 53, in <module>
from .packages.urllib3.contrib import pyopenssl
File "/usr/local/lib/python2.7/site-packages/ebcli/bundled/botocore/vendored/requests/packages/urllib3/contrib/pyopenssl.py", line 55, in <module>
import OpenSSL.SSL
File "/usr/local/lib/python2.7/site-packages/OpenSSL/__init__.py", line 8, in <module>
from OpenSSL import rand, crypto, SSL
File "/usr/local/lib/python2.7/site-packages/OpenSSL/rand.py", line 11, in <module>
from OpenSSL._util import (
File "/usr/local/lib/python2.7/site-packages/OpenSSL/_util.py", line 7, in <module>
binding = Binding()
File "/usr/local/lib/python2.7/site-packages/cryptography/hazmat/bindings/openssl/binding.py", line 114, in __init__
self._ensure_ffi_initialized()
File "/usr/local/lib/python2.7/site-packages/cryptography/hazmat/bindings/openssl/binding.py", line 126, in _ensure_ffi_initialized
cls._modules,
File "/usr/local/lib/python2.7/site-packages/cryptography/hazmat/bindings/utils.py", line 31, in load_library_for_binding
lib = ffi.verifier.load_library()
File "/usr/local/lib/python2.7/site-packages/cffi/verifier.py", line 97, in load_library
return self._load_library()
File "/usr/local/lib/python2.7/site-packages/cffi/verifier.py", line 207, in _load_library
return self._vengine.load_library()
File "/usr/local/lib/python2.7/site-packages/cffi/vengine_cpy.py", line 155, in load_library
raise ffiplatform.VerificationError(error)
cffi.ffiplatform.VerificationError: importing '/usr/local/lib/python2.7/site-packages/cryptography/_Cryptography_cffi_a269d620xd5c405b7.so': dlopen(/usr/local/lib/python2.7/site-packages/cryptography/_Cryptography_cffi_a269d620xd5c405b7.so, 2): Library not loaded: /usr/local/lib/libssl.1.0.0.dylib
Referenced from: /usr/local/lib/python2.7/site-packages/cryptography/_Cryptography_cffi_a269d620xd5c405b7.so
Reason: image not found
OSX 10.10.4;自制软件 0.9.5
这是一个一次性错误,其原因是 1) 我们决定删除 OpenSSL 的 "keg-only" 名称,然后 2) 在发现它造成严重的不兼容性后,我们随后放弃了该决定。如果您在 OpenSSL 不是 keg-only 期间从源代码针对 openssl 构建任何东西,则需要重建它。这是因为普通包的 install_names 是相对于 HOMEBREW_PREFIX 的,而 keg-only 包没有链接到 HOMEBREW_PREFIX。 (Keg-only 包有 install_names 指向私有前缀。)对于给您带来的不便,我们深表歉意。
Tim Smith 的回答是正确的(他是自制程序的维护者!)但它没有提供实际的修复。在梳理完这些问题 https://github.com/Homebrew/homebrew/issues/41613 and https://github.com/pyca/cryptography/issues/2138 之后,您的 python/pip
应该可以再次使用 openssl
brew link openssl --force
pip uninstall cryptography
pip install cryptography --no-use-wheel
brew unlink openssl
第一个 link 暂时修复了 pip。密码学是需要重建的图书馆。最后再次取消linking openssl。
使用
更新 Homebrew 之后brew update
brew upgrade --all
导致 Python 更新到 2.7。10_2,pip(和许多其他脚本)失败并显示
cffi.ffiplatform.VerificationError: importing '/usr/local/lib/python2.7/site-packages/cryptography/_Cryptography_cffi_a269d620xd5c405b7.so': dlopen(/usr/local/lib/python2.7/site-packages/cryptography/_Cryptography_cffi_a269d620xd5c405b7.so, 2): Library not loaded: /usr/local/lib/libssl.1.0.0.dylib
Referenced from: /usr/local/lib/python2.7/site-packages/cryptography/_Cryptography_cffi_a269d620xd5c405b7.so
Reason: image not found
我该怎么做才能恢复或调整我的 Python 配置以使其再次运行? Homebrew 做了什么破坏了它?
Traceback (most recent call last):
File "/usr/local/bin/eb", line 7, in <module>
from ebcli.core.ebcore import main
File "/usr/local/lib/python2.7/site-packages/ebcli/core/ebcore.py", line 43, in <module>
from . import globals, base, io, hooks
File "/usr/local/lib/python2.7/site-packages/ebcli/core/hooks.py", line 20, in <module>
from ..lib import aws
File "/usr/local/lib/python2.7/site-packages/ebcli/lib/aws.py", line 19, in <module>
import botocore.session
File "/usr/local/lib/python2.7/site-packages/ebcli/bundled/botocore/session.py", line 27, in <module>
import botocore.credentials
File "/usr/local/lib/python2.7/site-packages/ebcli/bundled/botocore/credentials.py", line 30, in <module>
from botocore.utils import InstanceMetadataFetcher, parse_key_val_file
File "/usr/local/lib/python2.7/site-packages/ebcli/bundled/botocore/utils.py", line 25, in <module>
from botocore.vendored import requests
File "/usr/local/lib/python2.7/site-packages/ebcli/bundled/botocore/vendored/requests/__init__.py", line 53, in <module>
from .packages.urllib3.contrib import pyopenssl
File "/usr/local/lib/python2.7/site-packages/ebcli/bundled/botocore/vendored/requests/packages/urllib3/contrib/pyopenssl.py", line 55, in <module>
import OpenSSL.SSL
File "/usr/local/lib/python2.7/site-packages/OpenSSL/__init__.py", line 8, in <module>
from OpenSSL import rand, crypto, SSL
File "/usr/local/lib/python2.7/site-packages/OpenSSL/rand.py", line 11, in <module>
from OpenSSL._util import (
File "/usr/local/lib/python2.7/site-packages/OpenSSL/_util.py", line 7, in <module>
binding = Binding()
File "/usr/local/lib/python2.7/site-packages/cryptography/hazmat/bindings/openssl/binding.py", line 114, in __init__
self._ensure_ffi_initialized()
File "/usr/local/lib/python2.7/site-packages/cryptography/hazmat/bindings/openssl/binding.py", line 126, in _ensure_ffi_initialized
cls._modules,
File "/usr/local/lib/python2.7/site-packages/cryptography/hazmat/bindings/utils.py", line 31, in load_library_for_binding
lib = ffi.verifier.load_library()
File "/usr/local/lib/python2.7/site-packages/cffi/verifier.py", line 97, in load_library
return self._load_library()
File "/usr/local/lib/python2.7/site-packages/cffi/verifier.py", line 207, in _load_library
return self._vengine.load_library()
File "/usr/local/lib/python2.7/site-packages/cffi/vengine_cpy.py", line 155, in load_library
raise ffiplatform.VerificationError(error)
cffi.ffiplatform.VerificationError: importing '/usr/local/lib/python2.7/site-packages/cryptography/_Cryptography_cffi_a269d620xd5c405b7.so': dlopen(/usr/local/lib/python2.7/site-packages/cryptography/_Cryptography_cffi_a269d620xd5c405b7.so, 2): Library not loaded: /usr/local/lib/libssl.1.0.0.dylib
Referenced from: /usr/local/lib/python2.7/site-packages/cryptography/_Cryptography_cffi_a269d620xd5c405b7.so
Reason: image not found
OSX 10.10.4;自制软件 0.9.5
这是一个一次性错误,其原因是 1) 我们决定删除 OpenSSL 的 "keg-only" 名称,然后 2) 在发现它造成严重的不兼容性后,我们随后放弃了该决定。如果您在 OpenSSL 不是 keg-only 期间从源代码针对 openssl 构建任何东西,则需要重建它。这是因为普通包的 install_names 是相对于 HOMEBREW_PREFIX 的,而 keg-only 包没有链接到 HOMEBREW_PREFIX。 (Keg-only 包有 install_names 指向私有前缀。)对于给您带来的不便,我们深表歉意。
Tim Smith 的回答是正确的(他是自制程序的维护者!)但它没有提供实际的修复。在梳理完这些问题 https://github.com/Homebrew/homebrew/issues/41613 and https://github.com/pyca/cryptography/issues/2138 之后,您的 python/pip
应该可以再次使用 openssl
brew link openssl --force
pip uninstall cryptography
pip install cryptography --no-use-wheel
brew unlink openssl
第一个 link 暂时修复了 pip。密码学是需要重建的图书馆。最后再次取消linking openssl。