Python skyfield FileNotFoundError beheben: [Errno 2] No such file or directory: 'de421.bsp'

English Deutsch

Problem:

Beim Versuch, die Python-Bibliothek skyfield zu verwenden, sehen Sie eine Ausnahme wie

skyfield_de421_error.txt
Input In [2], in <cell line: 11>()
      8 from calendar import monthrange
     10 ts = api.load.timescale()
---> 11 ephem = api.load_file('de413.bsp')

File /usr/local/lib/python3.10/dist-packages/skyfield/iokit.py:412, in load_file(path)
    410 base, ext = os.path.splitext(path)
    411 if ext == '.bsp':
--> 412     return SpiceKernel(path)
    413 raise ValueError('unrecognized file extension: {}'.format(path))

File /usr/local/lib/python3.10/dist-packages/skyfield/jpllib.py:71, in SpiceKernel.__init__(self, path)
     69 self.path = path
     70 self.filename = os.path.basename(path)
---> 71 self.spk = SPK.open(path)
     72 self.segments = [SPICESegment(self, s) for s in self.spk.segments]
     73 self.codes = set(s.center for s in self.segments).union(
     74                  s.target for s in self.segments)

File /usr/local/lib/python3.10/dist-packages/jplephem/spk.py:49, in SPK.open(cls, path)
     46 @classmethod
     47 def open(cls, path):
     48     """Öffnet die Datei unter `path` und gibt eine SPK-Instanz zurück."""
---> 49     return cls(DAF(open(path, 'rb')))

FileNotFoundError: [Errno 2] No such file or directory: 'de421.bsp'

Lösung

Werfen Sie einen Blick auf die Zeile api.load(...) in Ihrem Code:

example_load_de421.py
ephem = api.load_file('de421.bsp')

Es versucht, die Daten aus der Datei de421.bsp im aktuellen Verzeichnis zu laden. Diese Datei enthält Positionsdaten von Objekten am Himmel und Sie müssen diese Datei manuell herunterladen.

Sie können die Datei von der NASA herunterladen. Achten Sie lediglich darauf, sie entweder im richtigen Verzeichnis abzulegen oder den Pfad im api.load()-Aufruf so anzupassen, dass er auf die Datei verweist.

URL zum Herunterladen der Datei:

de421.bsp_url.txt
https://ssd.jpl.nasa.gov/ftp/eph/planets/bsp/de421.bsp

Meine bevorzugte Methode zum Herunterladen ist die Verwendung von wget:

download_de421_command.sh
wget https://ssd.jpl.nasa.gov/ftp/eph/planets/bsp/de421.bsp

Dieser Befehl platziert die Datei im aktuellen Verzeichnis.


Check out similar posts by category: Python, Skyfield