Joe*_*icz 8 python-cryptography apple-silicon apple-m1
帮助!我正在尝试在我的 m1 上安装加密。我知道我可以在 rosetta 模式下运行终端,但我想知道是否有办法不这样做。
输出:
ERROR: Command errored out with exit status 1:
command: /opt/homebrew/opt/python@3.9/bin/python3.9 /opt/homebrew/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py prepare_metadata_for_build_wheel /var/folders/hj/5zfkv68d7lqgrfqt046bn23c0000gn/T/tmpl4sga84k
cwd: /private/var/folders/hj/5zfkv68d7lqgrfqt046bn23c0000gn/T/pip-install-jko4b562/cryptography_7b1bbc9ece2f481a8e8e9ea03b1a0030
Complete output (55 lines):
=============================DEBUG ASSISTANCE=============================
If you are seeing a compilation error please try the following steps to
successfully install cryptography:
1) Upgrade to the latest pip and try again. This will fix errors for most
users. See: https://pip.pypa.io/en/stable/installing/#upgrading-pip
2) Read https://cryptography.io/en/latest/installation.html for specific
instructions for your platform.
3) Check our frequently asked questions for more information:
https://cryptography.io/en/latest/faq.html
=============================DEBUG ASSISTANCE=============================
Traceback (most recent call last):
File "/opt/homebrew/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py", line 280, in <module>
main()
File "/opt/homebrew/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py", line 263, in main
json_out['return_val'] = hook(**hook_input['kwargs'])
File "/opt/homebrew/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py", line 133, in prepare_metadata_for_build_wheel
return hook(metadata_directory, config_settings)
File "/private/var/folders/hj/5zfkv68d7lqgrfqt046bn23c0000gn/T/pip-build-env-9bqzge_f/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 161, in prepare_metadata_for_build_wheel
self.run_setup()
File "/private/var/folders/hj/5zfkv68d7lqgrfqt046bn23c0000gn/T/pip-build-env-9bqzge_f/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 145, in run_setup
exec(compile(code, __file__, 'exec'), locals())
File "setup.py", line 44, in <module>
setup(
File "/private/var/folders/hj/5zfkv68d7lqgrfqt046bn23c0000gn/T/pip-build-env-9bqzge_f/overlay/lib/python3.9/site-packages/setuptools/__init__.py", line 153, in setup
return distutils.core.setup(**attrs)
File "/opt/homebrew/Cellar/python@3.9/3.9.1_7/Frameworks/Python.framework/Versions/3.9/lib/python3.9/distutils/core.py", line 108, in setup
_setup_distribution = dist = klass(attrs)
File "/private/var/folders/hj/5zfkv68d7lqgrfqt046bn23c0000gn/T/pip-build-env-9bqzge_f/overlay/lib/python3.9/site-packages/setuptools/dist.py", line 432, in __init__
_Distribution.__init__(self, {
File "/opt/homebrew/Cellar/python@3.9/3.9.1_7/Frameworks/Python.framework/Versions/3.9/lib/python3.9/distutils/dist.py", line 292, in __init__
self.finalize_options()
File "/private/var/folders/hj/5zfkv68d7lqgrfqt046bn23c0000gn/T/pip-build-env-9bqzge_f/overlay/lib/python3.9/site-packages/setuptools/dist.py", line 708, in finalize_options
ep(self)
File "/private/var/folders/hj/5zfkv68d7lqgrfqt046bn23c0000gn/T/pip-build-env-9bqzge_f/overlay/lib/python3.9/site-packages/setuptools/dist.py", line 715, in _finalize_setup_keywords
ep.load()(self, ep.name, value)
File "/private/var/folders/hj/5zfkv68d7lqgrfqt046bn23c0000gn/T/pip-build-env-9bqzge_f/overlay/lib/python3.9/site-packages/cffi/setuptools_ext.py", line 219, in cffi_modules
add_cffi_module(dist, cffi_module)
File "/private/var/folders/hj/5zfkv68d7lqgrfqt046bn23c0000gn/T/pip-build-env-9bqzge_f/overlay/lib/python3.9/site-packages/cffi/setuptools_ext.py", line 49, in add_cffi_module
execfile(build_file_name, mod_vars)
File "/private/var/folders/hj/5zfkv68d7lqgrfqt046bn23c0000gn/T/pip-build-env-9bqzge_f/overlay/lib/python3.9/site-packages/cffi/setuptools_ext.py", line 25, in execfile
exec(code, glob, glob)
File "src/_cffi_src/build_openssl.py", line 77, in <module>
ffi = build_ffi_for_binding(
File "src/_cffi_src/utils.py", line 54, in build_ffi_for_binding
ffi = build_ffi(
File "src/_cffi_src/utils.py", line 74, in build_ffi
ffi = FFI()
File "/private/var/folders/hj/5zfkv68d7lqgrfqt046bn23c0000gn/T/pip-build-env-9bqzge_f/overlay/lib/python3.9/site-packages/cffi/api.py", line 48, in __init__
import _cffi_backend as backend
ImportError: dlopen(/private/var/folders/hj/5zfkv68d7lqgrfqt046bn23c0000gn/T/pip-build-env-9bqzge_f/overlay/lib/python3.9/site-packages/_cffi_backend.cpython-39-darwin.so, 2): Symbol not found: _ffi_prep_closure
Referenced from: /private/var/folders/hj/5zfkv68d7lqgrfqt046bn23c0000gn/T/pip-build-env-9bqzge_f/overlay/lib/python3.9/site-packages/_cffi_backend.cpython-39-darwin.so
Expected in: flat namespace
in /private/var/folders/hj/5zfkv68d7lqgrfqt046bn23c0000gn/T/pip-build-env-9bqzge_f/overlay/lib/python3.9/site-packages/_cffi_backend.cpython-39-darwin.so
Run Code Online (Sandbox Code Playgroud)
我试图像他们在该代码块中所说的那样构建和运行相同的错误。我环顾四周,似乎还没有人找到修复程序,但这些东西通常已经两个月大了。我错过了什么?
Pau*_*rer 16
此问题是由于 libffi 标头版本与动态链接器找到的 libffi 版本不匹配所致。一般来说,遇到这个问题的用户似乎安装了自制软件 libffi 并以某种方式针对它构建了 Python。
发生这种情况时cffi(cryptography依赖项)编译,但在运行时失败并引发此错误。这应该可以通过将正确的路径作为链接器参数传递来解决。要重新安装,cffi您应该pip uninstall cffi遵循
LDFLAGS=-L$(brew --prefix libffi)/lib CFLAGS=-I$(brew --prefix libffi)/include pip install cffi --no-binary :all:
这是一个丑陋的解决方法,但现在可以让您克服这个障碍。
更新:我已经为 macOS 上传了 arm64 轮子,因此如果您pip是最新的,则不再需要以下编译。但是,如果由于某种原因您希望自己编译它:
LDFLAGS="-L$(brew --prefix openssl@1.1)/lib" CFLAGS="-I$(brew --prefix openssl@1.1)/include" pip install cryptography
Mah*_*von 12
我正在使用 Macbook Pro M1 2020 型号并遇到了同样的问题。问题可能只出在我的 cffi 和 pip 版本上。因为这 4 个步骤帮助了我 -
pip uninstall cffipython -m pip install --upgrade pippip install cffipip install cryptography小智 9
聚会有点晚了,但上面的解决方案对我不起作用。Paul 让我走上了正轨,但我的问题是 pyenv 使用 mac libffi 进行构建,而 cffi 使用自制版本。我在某处读过这篇文章,不能声称有这种独特的见解。
我的解决方案是通过确保正确的标头库和包配置来确保我的 python (3.8.13) 是由 pyenv 使用自制 libffi 构建的:
export LDFLAGS="-L$(brew --prefix zlib)/lib -L$(brew --prefix bzip2)/lib -L$(brew --prefix openssl@1.1)/lib -L$(brew --prefix libffi)/lib"
export CPPFLAGS="-I$(brew --prefix zlib)/include -I$(brew --prefix bzip2)/include -I$(brew --prefix openssl@1.1)/include -I$(brew --prefix libffi)/include"
export PKG_CONFIG_PATH="$(brew --prefix openssl@1.1)/lib/pkgconfig:$(brew --prefix libffi)/lib/pkgconfig"
Run Code Online (Sandbox Code Playgroud)
重建Python...
pyenv uninstall 3.8.13
pyenv install 3.8.13
Run Code Online (Sandbox Code Playgroud)
杀死 pip 缓存
pip cache purge
Run Code Online (Sandbox Code Playgroud)
最后,使用 Pipenv 重新安装我的依赖项
pipenv --rm
pipenv sync --dev
Run Code Online (Sandbox Code Playgroud)
完成这些步骤后,我就摆脱了恐惧
ImportError: dlopen(/private/var/folders/k7/z3mq67_532bdr_rcm2grml240000gn/T/pip-build-env-apk5b25z/overlay/lib/python3.8/site-packages/_cffi_backend.cpython-38-darwin.so, 0x0002): symbol not found in flat namespace '_ffi_prep_closure'
Run Code Online (Sandbox Code Playgroud)
也许,您会遇到更多软件包的问题,并且每个软件包都有自己的 Apple Silicon 解决方案,这令人筋疲力尽。
我得出了最终的解决方案:使用 x86_x64 Homebrew 安装 x86 软件包,包括 Python。因此,您的所有要求都像在 x86_x64 mac 上一样安装,并且不再存在编译错误等问题。
指示:
Get info-> Open using rosetta)。/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"或者出于安全原因,您可以从https://brew.sh/获取此链接(切勿在未仔细检查的情况下从 stackoverflow 复制curl 命令)。~/.zshrc在您的(如果您使用的是 ZSH)或~/.bash_profile(如果您是 bash 用户)中添加别名: alias brew='arch -x86_64 /usr/local/bin/brew'。Open using rosetta在 iTerm2 中关闭Get info。现在,每次在终端应用程序中打印时,brew您都将运行 x86_x64 Homebrew。当您从 中安装任何软件包时brew,它将自动在 Rosetta 2 下运行。
| 归档时间: |
|
| 查看次数: |
3428 次 |
| 最近记录: |