【问题标题】:Gevent cant be installed on M1 mac using poetryGevent无法使用诗歌安装在M1 mac上
【发布时间】:2022-11-13 19:06:36
【问题描述】:

我尝试使用诗歌为虚拟环境安装许多依赖项。当它到达gevent (20.9.0) 时,它会得到以下信息

import error:

ImportError: dlopen(/private/var/folders/21/wxg5bdsj1w3f3j_9sl_pktbw0000gn/T/pip-build-env-50mwte36/overlay/lib/python3.8/site-packages/_cffi_backend.cpython-38-darwin.so,
0x0002): tried:
'/private/var/folders/21/wxg5bdsj1w3f3j_9sl_pktbw0000gn/T/pip-build-env-50mwte36/overlay/lib/python3.8/site-packages/_cffi_backend.cpython-38-darwin.so'
(mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e')), '/usr/local/lib/_cffi_backend.cpython-38-darwin.so' (no such file), '/usr/lib/_cffi_backend.cpython-38-darwin.so' (no such file)

我尝试使用 pip3 代替,但仍然遇到同样的问题。

【问题讨论】:

  • 您安装的 gevent 版本是 x86 版本,您使用的安装过程正在请求 arm。我不知道是否有 gevent 的 arm 版本,但可能是更新版本。如果可以,升级 gevent,或者在 rosetta2 下运行。
  • 看起来您正在混合 x86 和 arm64 代码,请确保(重新)安装 x86 或 arm64 的所有内容。还要检查您安装的 Python 架构。

标签: python apple-m1 gevent python-poetry


【解决方案1】:

我对其他库也有这个问题,这个解决方案有时有效:

sudo arch -arm64 <poetry or pip> install <lib to istall>

使用arch -arm64 允许我为 M1 处理器安装正确的轮子

【讨论】:

  • 没有sudo,有什么方法可以运行它吗?
  • 是的@Mr_Spock,实际上你不需要使用 sudo 。也检查你的自制和诗歌版本
【解决方案2】:

M1 需要一个进程中的所有 x86 代码或所有 arm64 代码。此问题是由尝试从本机 arm64 进程加载仅 x86_64 库的程序引起的。不幸的是,这无法完成 (See here)。

具体关于gevent,项目页面here包括以下信息:

从 gevent 20.12.0 开始,64 位 ARM 二进制文件在 PyPI 上分发,用于 aarch64 manylinux2014 兼容系统。安装这些需要最新版本的 pip。这些轮子不包含 c-ares 解析器,未经测试,并且采用非常低级别的优化构建。鼓励在 64 位 ARM 系统上使用 gevent 的认真生产用户构建自己的二进制轮子。

我不确定 Linux 上是否完全支持 arm64,但无论如何,我建议您将 geventpip 的版本更新到可能的最新版本。

【讨论】:

  • 我将 pip 更新到了最新版本,然后我尝试安装最新的 gevent 版本,但我得到了同样的错误。
【解决方案3】:

您需要从源代码编译它。 https://www.gevent.org/development/installing_from_source.html

arch -arm64 pip install --no-binary gevent gevent

【讨论】:

    猜你喜欢
    • 2021-11-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-20
    • 1970-01-01
    • 2021-09-15
    • 1970-01-01
    • 2022-01-09
    • 2021-10-28
    相关资源
    最近更新 更多