使用f2py后不会生成扩展模块(*.so)

2024-09-30 22:22:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Win7,为python安装了Anaconda,为fortran安装了gfortran(MINGW)。在

使用f2py之后,我找不到扩展模块文件。 我尝试了以下链接中的示例:

Three ways to wrap

F2PY - Calling Fortran routines from Python

如果我在Anaconda提示符中输入以下内容

<base> C:\Codes\F2PY> f2py -c --fcompiler=gfortran -m fib1 fib1.f

然后生成fib1.cp36-win_amd64.pyd文件和fib1文件夹。 .libs文件夹位于fib文件夹下,.libs文件夹中存在{}文件。在

但是,没有生成预期的扩展模块(fib1.so)。在

我错过了什么吗?在

我已经分别检查了gfortran和python是否运行良好。在

^{pr2}$

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\bin\HostX86\x64\link.exe /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO /LIBPATH:c:\mingw\lib\gcc\mingw32\6.3.0 /LIBPATH:c:\mingw\lib /LIBPATH:D:\Anaconda\libs /LIBPATH:D:\Anaconda\PCbuild\amd64 /LIBPATH:D:\Anaconda\libs /LIBPATH:D:\Anaconda\PCbuild\amd64 /LIBPATH:"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\ATLMFC\lib\x64" /LIBPATH:"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\lib\x64" /LIBPATH:"C:\Program Files (x86)\Windows Kits\10\lib\10.0.17134.0\ucrt\x64" /LIBPATH:"C:\Program Files (x86)\Windows Kits\10\lib\10.0.17134.0\um\x64" /EXPORT:PyInit_fib1 C:\Users\6829396\AppData\Local\Temp\tmpo3wc2rbs\Release\Users\6829396\AppData\Local\Temp\tmpo3wc2rbs\src.win-amd64-3.6\fib1module.obj C:\Users\6829396\AppData\Local\Temp\tmpo3wc2rbs\Release\Users\6829396\AppData\Local\Temp\tmpo3wc2rbs\src.win-amd64-3.6\fortranobject.obj C:\Users\6829396\AppData\Local\Temp\tmpo3wc2rbs\Release\libfib1.5W62YGKMVL6PD3QLPPSXTQ2OGA5LRIRQ.gfortran-win_amd64.lib /OUT:.\fib1.cp36-win_amd64.pyd /IMPLIB:C:\Users\6829396\AppData\Local\Temp\tmpo3wc2rbs\Release\Users\6829396\AppData\Local\Temp\tmpo3wc2rbs\src.win-amd64-3.6\fib1.cp36-win_amd64.lib copying C:\Users\6829396\AppData\Local\Temp\tmpo3wc2rbs\Release\.libs\libfib1.5W62YGKMVL6PD3QLPPSXTQ2OGA5LRIRQ.gfortran-win_amd64.dll -> .\fib1\.libs Removing build directory C:\Users\6829396\AppData\Local\Temp\tmpo3wc2rbs


Tags: liblocalanacondafilesprogramwinusersappdata
1条回答
网友
1楼 · 发布于 2024-09-30 22:22:24

我还使用win7+Anaconda+gfortran(MINGW),在试图包装包含在sdistan.f90文件中的subroutine distan(x,nx,nd,d)时遇到了同样的问题。在

命令python -m numpy.f2py -c -m sdistan sdistan.f90生成了一个sdistan.cp37-win_amd64.pyd文件,而不是*.so模块。在

在分析带有depends.exesdistan.cp37-win_amd64.pyd文件后,我发现有两个未解析的外部依赖关系:

(1)放在sdistan/.libs文件夹中的libsdistan.LD66OEXBPEJ74HMF6SZDLFFCVSPSTQVW.gfortran-win_amd64.dllDLL文件。在

(2)和python3.dll

我把这两个文件(第二个来自C:/Anaconda3/python3.dll)复制到我的工作目录中,问题就解决了。在

现在我可以import sdistan并且可以使用我的函数作为output=sdistan.distan(输入参数)。在

我希望这能帮助那些发现同样问题的人。如果有人能解释并纠正这种(奇怪/遗漏)行为,那就太好了。在

感谢大家对堆栈溢出的贡献!!在

相关问题 更多 >