GDAL在不同python版本下的編譯問題

對於GDAL相信大家都很熟悉,其在python下的編譯也很成熟,詳細可以參考李民錄專家的博文--《GDAL源碼剖析(三)之Swig編譯和幫助文檔生成》,完成後會在python安裝目錄下的Lib\site-packages\裏些關於gdal的文件,在使用時只需輸入from osgeo import gdal 命令之後就可以使用gdal的函數了。但也有些不喜歡搞編譯的童鞋,例如本人,就直接去下載李民錄老師那裏直接編譯好的gdal,然後拷貝到自己python\Lib\site-packages\文件夾後,再輸入from osgeo import gdal就會出現如下錯誤:

很是不解,於是自己利用vs2010又重新編譯GDAL原碼之後,gdal導入就沒有問題,是不是不同版本的python編譯過後的gdal不能互相使用,於是在python3.3.1版本下編譯的gdal生成的文件烤到python2.6.5下,也會出現上述的問題。再對python2.6.5的編譯後生成的烤到python3.3.1的還是會出現上述問題。如果將python2.6.5下編譯的版本拷貝到另外一臺電腦裝有python2.6.5的環境中,就可以使用gdal。將python3.3.1也這樣做,gdal也可以調用成功。那是否能斷定在不同python下編譯的gdal庫是不能夠互相使用的,或者需要進行特別的修改後又可以使用?目前暫時建議,如果使用人家編譯好的python的gdal庫,最好使用對應相同版本的pyhon環境。

 

疑問自解:

出現上面的錯誤主要是因爲python編譯gdal.dll不在當前環境變量中,只要把生成的gdal.dll所在路徑設置爲當前用戶的環境變量,就不會出現上面的問題了,至於上面不同版本之間編譯的GDAL的庫在不同版本python下調用是沒有問題的。希望被我誤導的童鞋及時糾正過來,嘿嘿~

 

 

關於python下gdal的使用還想再說明一點:

不知是否是受windows環境的影像還是gdal1.9.1版本的問題,在python導入gdal後,對於打開一幅影像的python代碼:dataset = gdal.Open(filepath,GA_ReadOnly),如果filepath = 'c:\test\test.tif'或者filepath = "c:\test\test.tif"(假設影像在c盤的test目錄下),這樣得到的dataset 也總是爲None,這是因爲文件路徑沒有進行字符轉義的原因,使用filepath = 'c:\\test\\test.tif',filepath = "c:/test/test.tif"(注意斜槓的方向)或者filepath = r'''c:\test\test.tif'''後,文件纔會被打開。所以在使用python調用gdal函數打開文件路徑也要注意此點。

在此感謝好友張祖鵬給於悉心地指導,但對於不同版本python下編譯好的gdal庫爲什麼不能使用在不同版本python環境中,還未能很好解譯,還希望有高手給於幫助,筆者在此先謝過。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章