【问题标题】:Runtime: no suchfile or directory运行时:没有这样的文件或目录
【发布时间】:2016-08-15 17:06:15
【问题描述】:

运行 python 脚本时出现以下错误:

/Documents/stage/crocus/python$ python bonaiguaforcing.py
sh: 1: ncks: not found
sh: 1: ncatted: not found
Traceback (most recent call last):
  File "bonaiguaforcing.py", line 142, in <module>
    creatforc('/home/chomette/Documents/stage/crocus/bonaigua2.txt','/home/chomette/Documents/stage/crocus/FORCING_bonaigua.nc')
  File "bonaiguaforcing.py", line 46, in creatforc
    meteo=netCDF4.Dataset(net_out,'a')
  File "netCDF4/_netCDF4.pyx", line 1746, in netCDF4._netCDF4.Dataset.__init__ (netCDF4/_netCDF4.c:10983)
RuntimeError: No such file or directory

在我的 python 脚本中,我创建了一个 netCDF 文件来复制数据,然后我创建了一个带有新变量的新 netCDF 文件,似乎 python 没有找到创建的第一个 netCDF 文件......但我不是当然。 感谢您的帮助 =)

【问题讨论】:

  • 您可以发布您的脚本或至少您认为引发错误的部分吗?

标签: python netcdf


【解决方案1】:

没有看到产生错误的代码,这看起来像是环境定义问题。你的 shell 找不到 NCO 的安装位置(如果你没有 NCO,那么这是一个依赖问题,你需要安装它才能让你的脚本工作)。

你试过 bash 吗:

  which ncks
  which ncatted

如果这些不在您的路径中,您将需要在您的 bash rc 中添加指向它们的别名,在您的主目录下执行以下命令(使用 vi 或其他编辑器):

vi .bashrc

然后添加到文件中:

alias ncks='/usr/bin/ncks'
alias ncatted='/usr/bin/ncatted'

您需要将/usr/ 更改为您的 NCO 安装位置。另外,在再次测试您的程序之前,不要忘记源 . .bashrc。您也可以只在 shell 中输入别名,但每次打开新终端时都需要这样做。

更新的答案(基于您在下面的评论): 现在看来您的脚本没有找到netCDF4 模块的一部分(它的一部分是用c 编写的,因此是.pyx 扩展名)。您需要确保您的环境已正确定义并且 netCDF 模块已正确编译。在继续之前,请在终端中键入以下命令:

python
from netCDF4 import Dataset

确保模块存在。如果可行,那么您可以按照https://netcdf4-python.googlecode.com/svn/trunk/docs/netCDF4-module.html 上的说明创建数据集,以确保模块已正确编译。

有关信息,您是否将 crocus 模型移植到新机器上?如果是这样,那也许可以解释为什么您缺少这么多依赖项(代码运行所需的模块、库和运算符)。如果不是,则您的脚本中可能存在另一个错误,这使得这看起来像是一个依赖问题。如果您认为这不是您的环境/依赖项的问题(即,如果有人已经在您的机器上运行了相同的脚本并且它有效),请发布生成番红花强迫的部分脚本。谢谢!

【讨论】:

  • 感谢您的回答,您知道安装模块数据集的 aswer 网站吗?导致这个netcdf4-python.googlecode.com/svn/trunk/docs/… 不起作用。
  • 谢谢你的回答,我现在有我的番红花模拟,但是当我想绘图时,我(另一个时间)有问题:cro_pro = netCDF4.Dataset("PRO_2015090106_2016043006_dust.nc" ,'r') 文件“netCDF4/_netCDF4.pyx”,第 1746 行,在 netCDF4._netCDF4.Dataset.__init__ (netCDF4/_netCDF4.c:10983) RuntimeError: 没有这样的文件或目录。我认为我的机器没有找到 Dataset Modul,但我已经安装了“python interface for netcdf4”包,我怎么知道是否安装了 modul Dataset modul?
  • 要查看Dataset类是否已经安装,只需创建一个python脚本,里面只有from netCDF4 import Dataset。如果它运行,那么您已经正确安装了 python 的 netCDF4 模块并且错误在其他地方。您可以在此处找到所有必须为 netCDF4 python API 安装的软件:unidata.github.io/netcdf4-python/#netCDF4.Dataset。请注意,如果您不提供带有文件名的路径(即 netCDF4.Dataset("/path/myfile.nc", 'r')),则必须在与 netCDF 文件相同的目录中运行绘图软件。
【解决方案2】:

您看到 RuntimeError 是因为在 netout 中指定的文件名不存在 - 'a' 模式(附加)要求该文件存在。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-30
    • 2022-08-19
    • 1970-01-01
    • 2013-09-13
    • 2018-03-24
    • 2021-11-18
    • 2021-06-24
    • 2018-03-06
    相关资源
    最近更新 更多