1

我有一个使用名为 flopy 的包的 python 脚本。我的脚本会为一个 fortran 可执行文件生成一系列输入。Flopy 将这些写入文本文件,然后调用 fortran 可执行文件,后者使用文本文件运行模型。

我使用的是 mac (OSX),我从 python.org 下载了 python 2.7——即我没有使用 Apple 系统版本的 python。我使用的 python 版本在 Library/Frameworks/Python.Frameworks/

如果我从终端窗口调用它,我可以运行我的脚本(通过输入:

Python myscriptname.py

但是,如果我通过 IDLE(我下载的 python 附带的版本)运行我的脚本,它会返回一个错误:

Traceback (most recent call last):
  File "/Users/neilthomas/RotatedModel_v4_Tr_mfnwt.py", line 355, in <module>
    success, mfoutput = mf.run_model(silent=False, pause=False)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/flopy/mbase.py", line 638, in run_model
normal_msg=normal_msg)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/flopy/mbase.py", line 1034, in run_model
stdout=sp.PIPE, stderr=sp.STDOUT, cwd=model_ws)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 710, in __init__
errread, errwrite)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1335, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory 

文件“mfnwt”绝对存在。我确定我遗漏了一些明显的东西,但是我需要做些什么来允许 IDLE 通过它使用的 shell 运行程序/子进程吗?谢谢。

4

1 回答 1

1

这里的问题是您必须识别您正在调用的特定 MO​​DFLOW 可执行文件(在您的情况下为“mfnwt”)。我对 MODFLOW 2000 文件做同样的事情:

mf = flopy.modflow.mf.Modflow(modelname,namefile_ext='nam',version='mf2k',exe_name='/home/MODFLOW-and-related-codes/build-08/bin-windows/mf2k.exe')

在你的情况下,你会做类似的事情,只替换version='mf2k'andexe_name=path以匹配你存储 MODFLOW 文件的位置。

有关详细信息,请参阅文档:https ://modflowpy.github.io/flopydoc/mf.html

于 2017-05-17T22:00:38.687 回答