2015-01-22 17 views
5

Bir gyt2 formatında bir hava durumu modelinden (GFS) son hava durumu verilerini indiren bir python betiğiyle ilgili bir sorunla karşılaştım. Eskiden çalışıyordu, ancak artık artık değil (yani GFS sunucusunda indirilmek üzere yeni dosyalar). Verilere erişmeye çalışırken bölümleme hatası alıyorum ve nereden başlayacağımı bile bilmiyorum. İki örnek (çalışıyor ve çalışmıyor) aşağıda. Linux nane tarçınını çalıştırıyorum. Ben python grib ve python3-grib yüklü (Sürüm: 1.9.8-1build2, yazılım yöneticisi).pygrib GRIB2 segmenation fault veri okunurken

Herhangi bir öneri çok takdir edilecektir.

Ps: Bana segmenation arızayı veren bir dosyası örneği buradadır: http://www.ftp.ncep.noaa.gov/data/nccf/com/gfs/prod/gfs.2015013000/ dosya adı: gfs.t00z.master.grbf003.10m.uv.grib2

eski dosyalar üzerinde tutulmaz Bu sunucu, bence. Bir örnek olsa da, burada bulunabilir: http://grib.virtual-loup-de-mer.org/archives/2014/0130/ dosya adı: gfs.t00z.master.grbf03.10m.uv.grib2

Pps: özürlerini kadar uzun sürdü için. Pygrib sürüm 2.0'ı 1.98'den yükledim ve şimdi çalışıyor. Arghh, bunu denemek uzun sürdü, (ve doğru şekilde kurmak için). Ama bu kadar. Her durumda , tüm cevaplar için herkese büyük 'merci', shabidou

/usr/bin/python3.4:

Python 3.4.0 (default, Apr 11 2014, 13:05:11) 
[GCC 4.8.2] on linux 
Type "help", "copyright", "credits" or "license" for more information. 

Çalışma komut:

import pygrib 

grbs = pygrib.open('winddata1.grib2') 

for grb in grbs: 

...  grb 

... 

1:10 metre U wind component:m s**-1 (instant):regular_ll:heightAboveGround:level 10 m:fcst time 0 hrs:from 201411041200 
2:10 metre V wind component:m s**-1 (instant):regular_ll:heightAboveGround:level 10 m:fcst time 0 hrs:from 201411041200 

grb = grbs.message(1) 

wind = grb.data(lat1=20,lat2=70,lon1=220,lon2=320) 

quit() 

/usr/bin/python3.4:

Python 3.4.0 (default, Apr 11 2014, 13:05:11) 
[GCC 4.8.2] on linux 
Type "help", "copyright", "credits" or "license" for more information. 

Başarısız komut dosyası:

import pygrib 

grbs = pygrib.open('winddata2.grib2') 

for grb in grbs: 
...  grb 
... 
1:10 metre U wind component:m s**-1 (instant):regular_ll:heightAboveGround:level 10 m:fcst time 0 hrs:from 201501220600 

2:10 metre V wind component:m s**-1 (instant):regular_ll:heightAboveGround:level 10 m:fcst time 0 hrs:from 201501220600 

grb = grbs.message(1) 

wind = grb.data(lat1=20,lat2=70,lon1=220,lon2=320) 

Hata:

Segmentation fault 

Düzenleme (bu kılan umut duygusu)

(komut testing.py gibi) çalıştıran bana verir:

gdb -ex r --args /usr/bin/python3.4 testing.py

GNU gdb (Ubuntu 7.7-0ubuntu3) 7.7 
Copyright (C) 2014 Free Software Foundation, Inc. 
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> 
This is free software: you are free to change and redistribute it. 
There is NO WARRANTY, to the extent permitted by law. Type "show copying" 
and "show warranty" for details. 
This GDB was configured as "x86_64-linux-gnu". 
Type "show configuration" for configuration details. 
For bug reporting instructions, please see: 
<http://www.gnu.org/software/gdb/bugs/>. 
Find the GDB manual and other documentation resources online at: 
<http://www.gnu.org/software/gdb/documentation/>. 
For help, type "help". 
Type "apropos word" to search for commands related to "word"... 
Reading symbols from /usr/bin/python3.4...(no debugging symbols found)...done. 
Starting program: /usr/bin/python3.4 testing.py 
[Thread debugging using libthread_db enabled] 
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". 
1:10 metre U wind component:m s**-1 (instant):regular_ll:heightAboveGround:level 10 m:fcst time 0 hrs:from 201501220600 
2:10 metre V wind component:m s**-1 (instant):regular_ll:heightAboveGround:level 10 m:fcst time 0 hrs:from 201501220600 

Program received signal SIGSEGV, Segmentation fault. 
0x000000000053b684 in PyLong_AsVoidPtr() 
(gdb) bt 
#0 0x000000000053b684 in PyLong_AsVoidPtr() 
#1 0x00007ffff5968da7 in ??() from /usr/lib/python3/dist-packages/numpy/core/multiarray.cpython-34m-x86_64-linux-gnu.so 
#2 0x0000000000533cd2 in PyObject_AsReadBuffer() 
#3 0x00007ffff21c9f00 in ??() from /usr/lib/python3/dist-packages/g2clib.cpython-34m-x86_64-linux-gnu.so 
#4 0x000000000057bf33 in PyEval_EvalFrameEx() 
#5 0x000000000057d3d3 in PyEval_EvalCodeEx() 
#6 0x000000000057df80 in ??() 
#7 0x000000000043810a in PyObject_Call() 
#8 0x00000000004d3745 in ??() 
#9 0x000000000043810a in PyObject_Call() 
#10 0x00007ffff677669c in ??() from /usr/lib/python3/dist-packages/pygrib.cpython-34m-x86_64-linux-gnu.so 
#11 0x000000000043810a in PyObject_Call() 
#12 0x00007ffff675788a in ??() from /usr/lib/python3/dist-packages/pygrib.cpython-34m-x86_64-linux-gnu.so 
#13 0x00007ffff6762ece in ??() from /usr/lib/python3/dist-packages/pygrib.cpython-34m-x86_64-linux-gnu.so 
#14 0x000000000057bf33 in PyEval_EvalFrameEx() 
#15 0x000000000057d3d3 in PyEval_EvalCodeEx() 
#16 0x000000000060ba83 in PyRun_FileExFlags() 
#17 0x000000000060bc85 in PyRun_SimpleFileExFlags() 
#18 0x000000000060d3ac in Py_Main() 
#19 0x000000000041ec0d in main() 
+0

İki winddata dosyasını bize bağladıysanız/bağladıysanız sorunu bulmaya yardımcı olabilir miydi? – Junuxx

+0

, 'gdb' altında çalıştırın ve yığın izlemesini yayınlayın. –

+0

Daha önce gdb kullanmamıştım. Hala yığın izini nasıl alacağım konusunda çalışıyorum - en kısa sürede yöneteceğim (bir süre sürebilir). Teşekkür ederim, L. – Laetitia

cevap

2

Ne versio pygrib kütüphanesinin n kaçıyor? http://pygrib.googlecode.com/svn/trunk/Changelog adresindeki sürüm notları, segfault hatasıyla sonuçlanan bir sorunu gidermek için yeni bir sürümün yapıldığı birkaç durumu açıklar. En sonunu indirip, hatanın hala var olup olmadığını anlarım.

+0

Merhaba, v geç cevap için özür dilerim. Sonunda, 2.x versiyonunu kullandı. – Laetitia

İlgili konular