Python f2py找不到任何编译器
我已经安装了NAG Fortran编译器。我可以通过调用Python f2py找不到任何编译器,python,f2py,Python,F2py,我已经安装了NAG Fortran编译器。我可以通过调用nagfor-o helloworld helloworld.f90来编译Fortran代码。如果使用f2py-c-m helloworld helloworld.f90--fcompiler=nagfor运行f2py,则不会发生任何事情。另外,如果我只是运行f2py什么都不会发生f2py——help fcompiler不提供任何输出 我安装了Windows7,并使用AnacondaPython发行版。你知道我应该如何解决这个问题吗?很不寻
nagfor-o helloworld helloworld.f90
来编译Fortran代码。如果使用f2py-c-m helloworld helloworld.f90--fcompiler=nagfor运行f2py,则不会发生任何事情。另外,如果我只是运行f2py
什么都不会发生f2py——help fcompiler
不提供任何输出
我安装了Windows7,并使用AnacondaPython发行版。你知道我应该如何解决这个问题吗?很不寻常,你根本看不到任何错误输出。
这听起来像是你在打别的电话。
确保Anaconda的脚本目录位于您的路径上,并且当前目录中没有名为f2py
的脚本。
根据您的计算机如何设置来解释文件类型,您可能需要运行类似于pythonf2py.py
的程序,其余参数相同
如果您使用的是Anaconda,您应该已经安装了一份gfortran。
如果你想改为使用它,确保Anaconda的bin目录在你的路径上。
除非您有一个非常新的(1.10,目前正在开发中)版本的numpy来使用gfortran,否则您需要转到Anaconda/Lib/site packages/numpy/distutils/fcompiler/gnu.py
并注释掉在64位windows上引起错误的行(第330行附近的某个地方)。
一旦你做到了这一点,它应该工作得很好
编辑:根据旧的和旧的,正确的fcompiler
标志是--fcompiler=nag
。
编译器是由供应商指定的,而不是由可执行文件名指定的。根据Ian的注释,我成功地运行了f2py(不幸的是,仅使用GNU Fortran编译器)
我不得不将C:\Loopy\Lib\site packages\numpy\distutils\fcompiler\gnu.py中的第337行更改为:
pass #raise NotImplementedError("Only MS compiler supported with gfortran on win64")
此外,我还使用了C:\Loopy\Scripts\f2py.py
我将.py添加到了PATHEXT,所以这不是问题所在。我的路径中有文件夹:C:\Loopy和C:\Loopy\Scripts。如果我在ipyton shell中导入f2py
,我会看到一个描述f2py用法的输出。但是,我在命令shell中使用f2py。这是正确的用法,对吗?@Moritz这是正确的用法。运行f2py
或pythonf2py.py
时,您是否看到了任何东西?有任何错误吗?在shell终端中运行where f2py
(或which f2py
)时会得到什么?@Moritz我刚刚更新了答案,加入了关于如何使用fcompiler
标志的建议。如果我运行where f2py
我会得到C:\Loopy\Scripts\f2py.py
但是如果我运行python f2py.py
我会得到python:无法打开文件'f2py.py':[Errno 2]没有这样的文件或目录
。如果我在目录C:\Loopy\Scripts
中运行pythonf2py.py
,我会得到预期的帮助message@Moritz您是否重新启动了运行这些命令的所有终端?如果f2py在您的路径上,python应该能够看到它,但是对路径的更改在您重新启动终端之前不会生效。目前有两种可能的解决方法,一种是将python文件设置为默认情况下由python运行(右键单击python文件,鼠标悬停在“open with”上,然后单击“choose default program”),另一种是在运行f2py时指定完整路径(即运行python C:\Loopy\Scripts\f2py.py
和其他参数)。