【问题标题】:arch x86_64 and arm64e is available but python3 is saying incompatible architecture on Mac M1arch x86_64 和 arm64e 可用,但 python3 说 Mac M1 上的架构不兼容
【发布时间】:2022-01-15 17:30:41
【问题描述】:

我正在尝试在 Mac M1 上运行此 reading-text-in-the-wild 。 当我尝试运行此代码时

 python3 make_keras_charnet_model.py

我得到了错误


Using Theano backend.
Traceback (most recent call last):
  File "/Users/name/miniforge3/envs/ocr_env/lib/python3.8/site-packages/theano/gof/cutils.py", line 305, in <module>
    from cutils_ext.cutils_ext import *  # noqa
ImportError: dlopen(/Users/name/.theano/compiledir_macOS-12.0-arm64-i386-64bit-i386-3.8.6-64/cutils_ext/cutils_ext.so, 0x0002): tried: '/Users/name/.theano/compiledir_macOS-12.0-arm64-i386-64bit-i386-3.8.6-64/cutils_ext/cutils_ext.so' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e')), '/usr/local/lib/cutils_ext.so' (no such file), '/usr/lib/cutils_ext.so' (no such file)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/name/miniforge3/envs/ocr_env/lib/python3.8/site-packages/theano/gof/cutils.py", line 316, in <module>
    from cutils_ext.cutils_ext import *  # noqa
ImportError: dlopen(/Users/name/.theano/compiledir_macOS-12.0-arm64-i386-64bit-i386-3.8.6-64/cutils_ext/cutils_ext.so, 0x0002): tried: '/Users/name/.theano/compiledir_macOS-12.0-arm64-i386-64bit-i386-3.8.6-64/cutils_ext/cutils_ext.so' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e')), '/usr/local/lib/cutils_ext.so' (no such file), '/usr/lib/cutils_ext.so' (no such file)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "make_keras_charnet_model.py", line 10, in <module>
    from keras.models import Sequential, model_from_json
  File "/Users/name/miniforge3/envs/ocr_env/lib/python3.8/site-packages/keras/models.py", line 15, in <module>
    from . import backend as K
  File "/Users/name/miniforge3/envs/ocr_env/lib/python3.8/site-packages/keras/backend/__init__.py", line 47, in <module>
    from .theano_backend import *
  File "/Users/name/miniforge3/envs/ocr_env/lib/python3.8/site-packages/keras/backend/theano_backend.py", line 1, in <module>
    import theano
  File "/Users/name/miniforge3/envs/ocr_env/lib/python3.8/site-packages/theano/__init__.py", line 76, in <module>
    from theano.scan_module import scan, map, reduce, foldl, foldr, clone
  File "/Users/name/miniforge3/envs/ocr_env/lib/python3.8/site-packages/theano/scan_module/__init__.py", line 40, in <module>
    from theano.scan_module import scan_opt
  File "/Users/name/miniforge3/envs/ocr_env/lib/python3.8/site-packages/theano/scan_module/scan_opt.py", line 59, in <module>
    from theano import tensor, scalar
  File "/Users/name/miniforge3/envs/ocr_env/lib/python3.8/site-packages/theano/tensor/__init__.py", line 7, in <module>
    from theano.tensor.subtensor import *
  File "/Users/name/miniforge3/envs/ocr_env/lib/python3.8/site-packages/theano/tensor/subtensor.py", line 27, in <module>
    import theano.gof.cutils  # needed to import cutils_ext
  File "/Users/name/miniforge3/envs/ocr_env/lib/python3.8/site-packages/theano/gof/cutils.py", line 319, in <module>
    compile_cutils()
  File "/Users/name/miniforge3/envs/ocr_env/lib/python3.8/site-packages/theano/gof/cutils.py", line 283, in compile_cutils
    cmodule.GCC_compiler.compile_str('cutils_ext', code, location=loc,
  File "/Users/name/miniforge3/envs/ocr_env/lib/python3.8/site-packages/theano/gof/cmodule.py", line 2212, in compile_str
    return dlimport(lib_filename)
  File "/Users/name/miniforge3/envs/ocr_env/lib/python3.8/site-packages/theano/gof/cmodule.py", line 299, in dlimport
    rval = __import__(module_name, {}, {}, [module_name])
ImportError: dlopen(/Users/name/.theano/compiledir_macOS-12.0-arm64-i386-64bit-i386-3.8.6-64/cutils_ext/cutils_ext.so, 0x0002): tried: '/Users/name/.theano/compiledir_macOS-12.0-arm64-i386-64bit-i386-3.8.6-64/cutils_ext/cutils_ext.so' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e')), '/usr/local/lib/cutils_ext.so' (no such file), '/usr/lib/cutils_ext.so' (no such file)

我已经复制了我的终端以使用 Rosetta 打开副本,但我仍然收到错误。

当我运行下面的命令来检查我的 M1 Mac 上可用的架构时

file /bin/bash

我得到这个输出

/bin/bash:具有 2 种架构的 Mach-O 通用二进制文件:[x86_64:Mach-O 64 位可执行 x86_64] [arm64e:Mach-O 64 位可执行 arm64e]

/bin/bash(用于架构 x86_64):Mach-O 64 位可执行 x86_64

/bin/bash(用于架构 arm64e):Mach-O 64 位可执行 arm64e

我看起来我有 x86_64 和 arm64e 可用,但错误是说

(mach-o 文件,但是是不兼容的架构 (有 'x86_64',需要 'arm64e')), '/usr/local/lib/cutils_ext.so' (没有这样的文件), '/usr/lib /cutils_ext.so'(没有这样的文件)

是什么导致了这个错误,我该如何解决?

【问题讨论】:

    标签: python apple-m1


    【解决方案1】:

    从外观上看,您使用的软件包与新的 mac 硬件不兼容。您需要使用 Rosetta 2 来运行它,它是一个苹果系统组件。

    【讨论】:

      【解决方案2】:

      我发现我需要指定架构

      所以而不是

      python3 make_keras_charnet_model.py
      

      我现在用这个

      arch -arm64 python3 make_keras_charnet_model.py
      

      【讨论】:

        【解决方案3】:

        当虚拟环境处于活动状态时,我通常会重新安装抱怨的软件包

        pip install -U --force &lt;package name&gt;

        【讨论】:

          【解决方案4】:

          如果您使用 macOS 64-bit universal2 installer 包安装 Python 3.8 或 3.9。您可以尝试使用python3-intel64 而不是python3

          在我的 MacBook M1 中

          /usr/local/bin/python3-intel64
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2022-07-10
            • 2022-08-10
            • 2022-08-23
            • 2022-10-25
            • 2022-08-09
            • 2022-01-27
            • 2023-02-02
            • 2022-10-20
            相关资源
            最近更新 更多