2016-04-22 4 views
-3

Ich erhalte die folgende Fehlermeldung, wenn ich meinen Python-Skript ausführen:Laufzeit: keine suchfile oder Verzeichnis

/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 

In meinem Python-Skript erstelle ich eine netCDF-Datei Daten zu kopieren und dann erstelle ich eine neue netCDF-Datei mit eine neue Variable, es scheint, dass Python nicht die erste netCDF-Datei erstellt .... aber ich bin mir nicht sicher. Danke für Ihre Hilfe =)

+1

Können Sie Ihr Skript oder zumindest den Teil posten, der den Fehler verursacht? –

Antwort

1

Ohne den Code zu sehen, der den Fehler erzeugt, sieht das wie ein Umgebungsdefinitionsproblem aus. Deine Shell kann nicht finden, wo NCO installiert ist (wenn du keinen NCO hast, dann ist das ein Abhängigkeitsproblem und du musst es installieren, damit dein Skript funktioniert).

Haben Sie in der Bash versucht:

which ncks 
    which ncatted 

Wenn diese nicht in den Weg, die Sie sie in Ihrem bash rc zeigt, führen Sie in Ihrem Home-Verzeichnis die folgenden gehen müssen Aliase hinzuzufügen (mit vi oder einem anderen Editor):

vi .bashrc 

dann zu der Datei hinzufügen:

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

Sie muss /usr/ an den Standort Ihrer NCO-Installation ändern. Vergessen Sie auch nicht, die Quelle . .bashrc zu finden, bevor Sie Ihr Programm erneut testen. Sie können auch einfach Ihre Aliase in die Shell eingeben, aber Sie müssen dies jedes Mal tun, wenn Sie ein neues Terminal öffnen.

Aktualisierte Antwort (basierend auf Ihrem Kommentar unten): Jetzt scheint es, dass Ihr Skript nicht einen Teil des Moduls netCDF4 finden (der Teil davon in C geschrieben, daher die .pyx-Erweiterung). Sie müssen sicherstellen, dass Ihre Umgebung korrekt definiert ist und das netCDF-Modul korrekt kompiliert wurde. Bevor Sie weitermachen, geben Sie die folgenden Befehle in ein Terminal ein:

python 
from netCDF4 import Dataset 

, um sicherzustellen, dass das Modul existiert. Wenn das funktioniert, können Sie den Anweisungen unter https://netcdf4-python.googlecode.com/svn/trunk/docs/netCDF4-module.html folgen, um ein Dataset zu erstellen, um sicherzustellen, dass das Modul korrekt kompiliert wurde.

Für Informationen, sind Sie das Crocus-Modell zu einer neuen Maschine portieren? Wenn ja, könnte das erklären, warum Sie so viele Abhängigkeiten (Module, Bibliotheken und Operatoren, die Ihr Code benötigt, um zu funktionieren) vermissen. Ist dies nicht der Fall, liegt möglicherweise ein anderer Fehler in Ihrem Skript vor, der dies wie ein Abhängigkeitsproblem aussehen lässt. Bitte posten Sie einen Teil Ihres Skripts zum Generieren der Krokusantriebe, wenn Sie nicht denken, dass dies ein Problem mit Ihrer Umgebung/Abhängigkeiten ist (dh wenn jemand das gleiche Skript bereits auf Ihrem Rechner ausgeführt hat und es funktioniert). Vielen Dank!

+0

Danke für deine Antwort, kennst du eine aswer Webseite um das Modul Dataset zu installieren? Ursache dafür https://netcdf4-python.googlecode.com/svn/trunk/docs/netCDF4-module.html funktioniert nicht. – joe

+0

Danke für die Antwort, ich habe jetzt meine Simulation mit Crocus, aber wenn ich plotten will, habe ich (ein anderes Mal) das Problem mit: cro_pro = netCDF4.Dataset ("PRO_2015090106_2016043006_dust.nc", "r") Datei "netCDF4/_netCDF4.pyx", Zeile 1746, in netCDF4._netCDF4.Dataset.__init__ (netCDF4/_netCDF4.c: 10983) RuntimeError: Keine solche Datei oder Verzeichnis. Ich denke mein Rechner findet das Dataset Modul nicht, aber ich habe das Paket "python interface for netcdf4" installiert, woher weiß ich, ob das modul Dataset modul installiert ist? – joe

+0

Um herauszufinden, ob die Dataset-Klasse installiert wurde, erstellen Sie einfach ein Python-Skript mit nur 'from netCDF4 import Dataset'. Wenn es ausgeführt wird, haben Sie das netCDF4-Modul für Python ordnungsgemäß installiert, und der Fehler ist woanders. Sie finden die gesamte Software, die für die netCDF4-Python-API installiert werden muss: http://unidata.github.io/netcdf4-python/#netCDF4.Dataset. Bitte beachten Sie, dass Sie Ihre Plot-Software im gleichen Verzeichnis wie Ihre netCDF-Datei ausführen müssen, wenn Sie keinen Pfad mit dem Dateinamen angeben (zB netCDF4.Dataset ("/ path/myfile.nc", "r")). – SpicyBaguette

0

Sie sehen eine RuntimeError weil der Dateiname in netout angegeben ist nicht vorhanden - die 'a' Modus (anhängen) erfordert, dass die Datei vorhanden ist.

Verwandte Themen