Windows 上的 f90wrap(Fortran 90 的 Python 包装器)

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

我有一个调用 Fortran 例程的 Python 程序。这些 Fortran 例程用 f90wrap (https://github.com/jameskermode/f90wrap) 包装,并且我已经验证该设置在 Linux 和 Mac OSX 上可以正常工作。我现在正在尝试让设置在 Windows 上同样有效(因为我与有时无法切换到 Linux 的人合作)。

我已经通过 MinGW 安装运行了 gfortran,并验证了 Fortran 程序的编译和运行没有错误。我还验证了 Python 2.7 安装可以正常工作,并且能够使用 pip 添加 numpy、matplotlib 和 scipy 模块而不会出现问题。 MinGW 和 Python 都是 64 位,在 Windows 10 上运行。我还使用 CMake 创建 Makefile,使用 mingw-make 编译独立的 fortran 程序,所以剩下的唯一部分(让事情在 Windows 上运行)是确保Fortran-90 的 Python 包装器可以工作。这就是我遇到一些问题的地方。

我正在 Powershell 中运行 mingw-make(我相信它在 cmd.exe 中执行)。

Q1:f90wrap 的 pip 安装失败,出现绝对路径/相对路径错误 (https://github.com/jameskermode/f90wrap/issues/73)

A1:我下载了源代码并运行了“python setup.py install”,但也被卡住了。我在 Windows 10、Python 2.7 和 mingw-w64 中遇到了“multiple_definition”错误。

F:/Programs/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/7.2.0/../../../../x86_64-w64-mingw32/lib/. ./lib/libmingw32.a(lib64_libmingw32_a-atonexit.o):atonexit.c:(.text+0xc0): atexit' F:\Programs\Python\libs/libmsvcr90.a(deoks01081.o):( 的多个定义.text+0x0):首先在这里定义 F:/Programs/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/7.2.0/../../../../x86_64 -w64-mingw32/lib/../lib/libmingw32.a(lib64_libmingw32_a-mingw_helpers.o):mingw_helpers.c:(.text+0x0): 多重定义 of_decode_pointer' F:\Programs\Python\libs/libmsvcr90.a(deoks00231.o):(.text+0x0):首先在这里定义 F:/Programs/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/7.2.0/../../../../x86_64-w64-mingw32/lib/.. /lib/libmingw32.a(lib64_libmingw32_a-mingw_helpers.o):mingw_helpers.c:(.text+0x10): `_encode_pointer' 的多个定义 F:\Programs\Python\libs/libmsvcr90.a(deoks00241.o):(.text+0x0):首先在这里定义 collect2.exe:错误:ld 返回 1 退出状态 错误:命令“gcc -g -shared build emp.win-amd64-2.7\Release 90wrap rraydatamodule.o build emp.win-amd64-2.7\Release\programs\python\lib\site-packages umpy 2py\src ortranobject.o -LF:\Programs\Python\libs -LF:\Programs\Python\PCbuild md64 -lpython27 -lmsvcr90 -o build\lib.win-amd64-2.7 90wrap rraydata.pyd" 失败退出状态 1

python-2.7 windows-10 mingw mingw-w64 atexit
1个回答
0
投票

我让 f90wrap 在 Windows 10(64 位,家庭版)上使用 Anaconda Python 3.8.8、numpy 版本 1.20.1 和 f90wrap 0.2.7 运行; gfortran 到 mingw-w64 (v8.1.0)。在告诉 distutils.cfg 使用 mingw32 (而不是 microsoft Visual c/c++ 编译器)之后,我使用 python setup.py install 构建了 f90wrap

链接:

  1. https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/installer/mingw-w64-install.exe/download
© www.soinside.com 2019 - 2024. All rights reserved.