【问题标题】:f2py does not find any compilerf2py 没有找到任何编译器
【发布时间】:2015-02-06 16:02:01
【问题描述】:

我已经安装了 NAG Fortran 编译器。我可以通过调用nagfor -o helloworld helloworld.f90 来编译 Fortran 代码。如果我使用f2py -c -m helloworld helloworld.f90 --fcompiler=nagfor 运行 f2py,则不会发生任何事情。此外,如果我只是运行f2py,则不会发生任何事情。 f2py --help-fcompiler 没有输出。

我安装了 Windows 7 并使用 Anaconda Python 发行版。知道我应该如何解决这个问题吗?

【问题讨论】:

    标签: python f2py


    【解决方案1】:

    在 Ian 的 cmets 和 this post 之后,我设法运行了 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

    【讨论】:

      【解决方案2】:

      您根本看不到任何错误输出是不寻常的。 这听起来像是你在打电话给别的东西。 确保您的路径上有 Anaconda 的脚本目录,并且您的当前目录中没有某种名为 f2py 的脚本。 根据您将计算机设置为解释文件类型的方式,您可能需要运行 python f2py.py 之类的内容,其余参数相同。

      如果您使用的是 Anaconda,您也应该已经安装了 gfortran 的副本。 如果您想使用它,请确保 Anaconda 的 bin 目录在您的路径上。 除非您有 numpy 的最新(1.10,目前正在开发)版本,否则要使用 gfortran,您需要转到 Anaconda/Lib/site-packages/numpy/distutils/fcompiler/gnu.py 并注释掉引发错误的行(大约在第 330 行)在 64 位窗口上。 完成后,它应该可以正常工作。

      编辑:根据旧的f2py docscurrent source 判断,正确的fcompiler 标志是--fcompiler=nag。 编译器由供应商指定,而不是由可执行文件名称指定。

      【讨论】:

      • 我将 .py 添加到 PATHEXT 所以这不是问题。我的路径中有文件夹:C:\Loopy 和 C:\Loopy\Scripts。如果我在 ipyton shell 中执行import f2py,我确实会看到描述 f2py 用法的输出。但是,我在命令 shell 中使用 f2py。这才是正确的用法,对吧?
      • @Moritz 这是使用它的正确方法。当你运行f2pypython f2py.py 时,你看到了什么吗?有任何错误吗?当您运行 where f2py(或在 shell 终端中运行 which f2py)时会得到什么?
      • @Moritz 我也刚刚更新了答案以包含有关如何使用 fcompiler 标志的建议。
      • 如果我运行where f2py,我得到C:\Loopy\Scripts\f2py.py,但如果我运行python f2py.py,我得到python: can't open file 'f2py.py': [Errno 2] No such file or directory。如果我在目录C:\Loopy\Scripts 中运行python f2py.py,我会收到预期的帮助消息
      • @Moritz 您是否重新启动了运行这些命令的所有终端?如果 f2py 在您的路径上,python 应该能够看到它,但是对路径的更改在您重新启动终端之前不会生效。目前有两种可能的解决方法是将python文件设置为默认由python运行(右键单击python文件,将鼠标悬停在“打开方式”上,然后单击“选择默认程序”)或指定完整路径(即运行python C:\Loopy\Scripts\f2py.py 与其余参数)运行 f2py 时。
      猜你喜欢
      • 2014-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多