2016-07-27 12 views
6

Vì vậy, tôi không nên phàn nàn, nhưng nó gây phiền nhiễu. Trên thiết lập của tôi (Windows Server 2012 R2) nhập GDAL bằng Python trong thiết bị đầu cuối, hãy in như sau:Nhập GDAL in nhiều thông báo lỗi, nhưng vẫn hoạt động

>>> 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. 

>>> 

Nhưng tôi vẫn có thể sử dụng GDAL mà không gặp bất kỳ vấn đề nào, mặc dù có thông báo đó. Trong Jupyter, những lỗi này không được in. Tuy nhiên, tôi không quan tâm đến những tin nhắn đó miễn là chức năng không bị phá vỡ, và cho usecase của tôi, nó không. Tuy nhiên, tôi đang gọi chức năng nhập GDAL bằng cách sử dụng multiprocessing Pool, trên 12 lõi và in ra không cần thiết 12 lần. Điều đó gây khó chịu chủ yếu bởi vì nó che khuất đầu ra mà tôi quan tâm: tiến độ thực hiện. Tôi có thể làm gì về điều này (một cách để ẩn các thư này hoặc giải quyết các vấn đề cơ bản khiến chúng xuất hiện)?

Lưu ý, phiên bản Python là: Python 3.5.1 | Anaconda custom (64-bit) | (mặc định, ngày 16 tháng 2 năm 2016, 09:49:46) [MSC v. 1900 64 bit (AMD64)] trên win32. GDAL rõ ràng được cài đặt từ Anaconda, từ gói tùy chỉnh IOOS. Phiên bản GDAL là 1.11.4, np110py35_vc14_7.

+0

Bạn đã thử sử dụng [mô-đun ghi nhật ký để nắm bắt cảnh báo] (https://docs.python.org/3/library/logging.html#logging.captureWarnings)? Trước khi bạn nhập: 'nhập nhật ký; logging.captureWarnings (True); nhập khẩu gdal; logging.captureWarnings (False) '. Điều đó có thể ẩn chúng khỏi in ấn để stderr. –

+0

Tôi đã thử mọi thứ, ngay từ việc chuyển hướng bàn điều khiển sang sử dụng các gói để bỏ qua các cảnh báo. Mặc dù tôi đã không thử giải pháp cụ thể của bạn, tôi sẽ tưởng tượng nó sẽ không hoạt động. Nó không phải là python đang in các thông điệp GDAL, mà là GDAL. Những cảnh báo này đến từ mã C của GDAL, theo cách không được chuyển qua các ràng buộc GDAL của Python. Vì vậy, không có gì từ Python sẽ làm các trick, nó là một thiết lập cấu hình GDAL cần phải được thay đổi. Tôi không biết làm thế nào để làm điều đó. – Kartik

+0

Ngoài ra, tôi là một thực tập sinh tại một công ty mà dự án của tôi liên quan đến việc sử dụng GDAL. Kể từ khi thực tập xong, tôi không còn làm việc với GDAL hoặc có quyền truy cập vào công ty để thử giải pháp của bạn. Nhưng nếu ai đó đang sử dụng GDAL và có vấn đề tương tự, người đó có thể được hưởng lợi từ giải pháp của bạn và có thể nhận xét để cho chúng tôi biết cách hoạt động của nó. – Kartik

Trả lời

1

Nhìn vào the source, bạn có thể thấy rằng nó cố gắng nhập mô-đun trong khối thử/ngoại trừ. Nó sẽ in lỗi GDAL nhưng sẽ không nâng cao ngoại lệ Python, trừ khi chế độ đó được bật với gdal.UseExceptions().

Có thể một số chức năng/chức năng nhất định sẽ bị lỗi nhưng bạn đơn giản không sử dụng chúng trong tập lệnh của mình. Cụ thể, nó đang tìm kiếm một số trình điều khiển cho HDF và các định dạng khác. Có thể đã xảy ra sự cố khi biên dịch OSGEO/GDAL vì hỗ trợ cho một số định dạng này yêu cầu các bản dựng đặc biệt.

Bạn nên xây dựng lại chính xác nếu bạn cần hỗ trợ cho các định dạng này hoặc bắt đầu lại bằng cài đặt "đồng bằng" mới.

Các vấn đề liên quan