2016-07-27 41 views
6

Nie powinienem narzekać, ale to jest denerwujące. Na mojej konfiguracji (Windows Server 2012 R2) przywozu gdal w Pythonie w końcowych wydruków co następuje:Importowanie GDAL drukuje wiele komunikatów o błędach, ale nadal działa

>>> import gdal 
ERROR 1: Can't load requested DLL: C:\Program Files (x86)\GDAL\gdalplugins\gdal_ 
BAG.dll 
193: %1 is not a valid Win32 application. 

ERROR 1: Can't load requested DLL: C:\Program Files (x86)\GDAL\gdalplugins\gdal_ 
BAG.dll 
193: %1 is not a valid Win32 application. 

ERROR 1: Can't load requested DLL: C:\Program Files (x86)\GDAL\gdalplugins\gdal_ 
FITS.dll 
193: %1 is not a valid Win32 application. 

ERROR 1: Can't load requested DLL: C:\Program Files (x86)\GDAL\gdalplugins\gdal_ 
FITS.dll 
193: %1 is not a valid Win32 application. 

ERROR 1: Can't load requested DLL: C:\Program Files (x86)\GDAL\gdalplugins\gdal_ 
GMT.dll 
193: %1 is not a valid Win32 application. 

ERROR 1: Can't load requested DLL: C:\Program Files (x86)\GDAL\gdalplugins\gdal_ 
GMT.dll 
193: %1 is not a valid Win32 application. 

ERROR 1: Can't load requested DLL: C:\Program Files (x86)\GDAL\gdalplugins\gdal_ 
HDF4.dll 
193: %1 is not a valid Win32 application. 

ERROR 1: Can't load requested DLL: C:\Program Files (x86)\GDAL\gdalplugins\gdal_ 
HDF4.dll 
193: %1 is not a valid Win32 application. 

ERROR 1: Can't load requested DLL: C:\Program Files (x86)\GDAL\gdalplugins\gdal_ 
HDF4Image.dll 
193: %1 is not a valid Win32 application. 

ERROR 1: Can't load requested DLL: C:\Program Files (x86)\GDAL\gdalplugins\gdal_ 
HDF4Image.dll 
193: %1 is not a valid Win32 application. 

ERROR 1: Can't load requested DLL: C:\Program Files (x86)\GDAL\gdalplugins\gdal_ 
HDF5.dll 
193: %1 is not a valid Win32 application. 

ERROR 1: Can't load requested DLL: C:\Program Files (x86)\GDAL\gdalplugins\gdal_ 
HDF5.dll 
193: %1 is not a valid Win32 application. 

ERROR 1: Can't load requested DLL: C:\Program Files (x86)\GDAL\gdalplugins\gdal_ 
HDF5Image.dll 
193: %1 is not a valid Win32 application. 

ERROR 1: Can't load requested DLL: C:\Program Files (x86)\GDAL\gdalplugins\gdal_ 
HDF5Image.dll 
193: %1 is not a valid Win32 application. 

ERROR 1: Can't load requested DLL: C:\Program Files (x86)\GDAL\gdalplugins\gdal_ 
netCDF.dll 
193: %1 is not a valid Win32 application. 

ERROR 1: Can't load requested DLL: C:\Program Files (x86)\GDAL\gdalplugins\gdal_ 
netCDF.dll 
193: %1 is not a valid Win32 application. 

>>> 

Ale mogę nadal korzystać gdal bez problemu mimo tych wiadomości. W Jupyter błędy te nie są drukowane. Sam nie przejmuję się tymi wiadomościami, dopóki funkcjonalność się nie psuje, a na mój użytek nie ma. Jednak nazywam funkcję, która importuje GDAL przy użyciu multiprocessing Pool, na 12 rdzeniach, i drukuje to niepotrzebnie 12 razy. To staje się denerwujące głównie dlatego, że zaciemnia dane wyjściowe, które mnie interesują: postęp realizacji. Co mogę z tym zrobić (sposób na ukrycie tych wiadomości lub rozwiązanie problemów, które powodują ich pojawienie się)?

Uwaga, wersja Pythona to: Python 3.5.1 | Anaconda custom (64-bit) | (domyślnie, 16 lutego 2016, 09:49:46) [MSC v. 1900 64 bit (AMD64)] na win32. GDAL jest oczywiście zainstalowany z Anacondy, z niestandardowego pakietu IOOS. Wersja GDAL to 1.11.4, np110py35_vc14_7.

+0

Czy próbowałeś użyć [modułu logowania do przechwytywania ostrzeżeń] (https://docs.python.org/3/library/logging.html#logging.captureWarnings)? Przed importowaniem: 'importowanie logowania; logging.captureWarnings (True); import gdal; logging.captureWarnings (False) '. To może ukryć je przed drukowaniem na stderr. –

+0

Próbowałem wszystkiego, od przekierowania konsoli do używania pakietów do ignorowania ostrzeżeń. Chociaż nie wypróbowałem twojego konkretnego rozwiązania, wyobrażam sobie, że to nie zadziała. To nie jest pyton, który drukuje wiadomości GDAL, ale sam GDAL. Ostrzeżenia te pochodzą z kodu C GDAL, w sposób, który nie jest przekazywany przez powiązania Python GDAL. Nic z Pythona nie zadziała, jest to ustawienie konfiguracyjne GDAL, które należy zmienić. Nie wiem jak to zrobić. – Kartik

+0

Byłem stażystą w firmie, w której mój projekt wymagał użycia GDAL. Od zakończenia tego stażu nie pracuję już z GDAL ani nie mam dostępu do firmy, aby wypróbować Twoje rozwiązanie. Ale jeśli ktoś inny używa GDAL i ma podobne problemy, ta osoba może skorzystać z twojego rozwiązania i może skomentować, aby poinformować nas, jak to działa. – Kartik

Odpowiedz

1

Patrząc na the source widać, że próbuje on importować moduły w bloku try/except. Wypisze błędy GDAL, ale nie podniesie wyjątków Pythona, chyba że ten tryb jest włączony z gdal.UseExceptions().

Jest prawdopodobne, że pewne funkcje/funkcjonalność mogą być błędne, ale po prostu nie korzystasz z nich w swoich skryptach. W szczególności szuka sterowników dla HDF i innych formatów. Być może pojawił się problem ze skompilowaniem OSGEO/GDAL, ponieważ obsługa niektórych z tych formatów wymaga specjalnych kompilacji.

Powinieneś ponownie zbudować poprawnie, jeśli potrzebujesz wsparcia dla tych formatów, lub zacząć od nowa ze świeżą "zwykłą" instalacją.