[英]GDAL Import Error after freezing Python 3 script
我試圖凍結包含從osgeo
導入的Python腳本,但是可執行文件失敗,並出現ImportError: No module named '_gdal'
。
我已將腳本精簡為一行:
import osgeo
在Python(版本3.3.3)中運行時,一切都很好。 我試着用cx_Freeze和py2exe凍結。 這兩個報告是有缺失的模塊: ? _gdal imported from osgeo
? _gdal imported from osgeo
(以及其他),但成功凍結了腳本。 然后該exe失敗,並出現上述ImportError。
我試過在python中導入_gdal
,並且可以正常工作。 我嘗試在凍結選項中手動包含osgeo
模塊,但仍然遇到相同的錯誤。
這里有一個類似的問題: 用cx_Freeze,Python3.4導入GDAL,但這也許不是cx_freeze問題,因為py2exe也發生了此問題(它現在對python 3進行了實驗性支持)。
有人知道如何解決此問題嗎?
我找到了解決方法。 我編輯了osgeo\\__init__.py
文件,並修改了第13行,如下所示:import osgeo._gdal
。 這僅在凍結時手動包含模塊osgeo._gdal時有效。 @Thomas K我猜你的解決方案做同樣的事情。
請注意,如果需要,必須在osgeo.ogr
(第18行)和osgeo.osr
(第18行)模塊上都進行相同的修改(分別import osgeo._ogr
和import osgeo._osr
)。 這意味着在凍結時也必須手動添加它們。 我的凍結命令現在看起來像這樣: python cxfreeze.py module1.py --include-modules=osgeo._gdal,osgeo._ogr,osgeo._osr
。
感謝@Thomas K的幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.