导入错误:如何让 F2PY 在 Apple M1 上运行?

问题描述 投票:0回答:2

我想使用 f2py 将 fortran 文件导入到我的 python 脚本中。

为此,我通过

编译它们

f2py -c -m my_lib *.f

生成文件“my_lib.cpython-38-darwin.so”,我将其导入到我的脚本中

import my_lib
.

在我的基于 Intel 的 Macbook 上运行良好。但是,在 M1 机器上运行脚本会产生以下错误:

ImportError: dlopen(./my_lib.cpython-38-darwin.so, 0x0002): tried: './my_lib.cpython-38-darwin.so' (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64')), '/usr/local/lib/my_lib.cpython-38-darwin.so' (no such file), '/usr/lib/my_lib.cpython-38-darwin.so' (no such file)

当我以 Rosetta 模式启动终端时,也会发生同样的情况。

知道如何解决这个问题吗?

python fortran apple-m1 f2py
2个回答
3
投票

我不知道你是否能解决这个问题,但我找到了在我的 Mac 上解决这个问题的解决方案。

在我的 Mac 上运行

f2py
导致了同样的错误。 经过一段时间的寻找原因后,我尝试使用另一个 Python 环境(基于另一个基础解释器)。
在改变之前我使用了 Anaconda 环境。

我认为该错误可能是由未在 M1 芯片上本地运行的解释器引起的。编译后的 Fortran 代码必须在 Mac 上本机运行。所以可能存在兼容性问题。

现在我正在使用“开发人员命令行工具”(在本例中为 Python 3.8)提供的解释器来编译源代码并构建

.so
文件。
我还使用此基本解释器来运行必须包含 Fortran 包的脚本。

通过这样做,我能够让它在我的 Mac 上运行。


0
投票

我在 M2 上遇到了完全相同的问题。你找到解决方法了吗?谢谢你! @stegmaja

© www.soinside.com 2019 - 2024. All rights reserved.