【问题标题】:Python 2.7 sub processPython 2.7 子进程
【发布时间】:2017-05-30 04:26:37
【问题描述】:

我有一个使用名为 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 运行程序/子进程吗?谢谢。

【问题讨论】:

  • "文件 'mfnwt' 绝对存在"...你确定吗?
  • 你是怎么闲着的?你使用相对文件名吗?您当前的工作目录可能不是您认为的那样,这将影响相对路径名。打印os.getcwd() 看看它是什么。
  • @Rishav:是的,文件 mfnwt 确实存在——如上所述,我可以通过终端运行相同的脚本。
  • @tdelaney:我通过右键单击脚本并使用 IDLE 打开 python 脚本来运行 IDLE。该脚本与文件“mfnwt”位于同一文件目录中。
  • 我不知道具体的OSX,但是右键通常不会设置当前目录。尝试右键单击 import os;print(os.getcwd());input("end") 之类的简单脚本以查看它是什么。

标签: python macos python-2.7 subprocess flopy


【解决方案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'exe_name=path 以匹配您存储 MODFLOW 文件的位置。

查看文档了解更多详情:https://modflowpy.github.io/flopydoc/mf.html

【讨论】:

    猜你喜欢
    • 2018-02-04
    • 2018-11-14
    • 1970-01-01
    • 2014-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-11
    • 2015-11-12
    • 2021-05-11
    相关资源
    最近更新 更多