我试图冻结一个Python脚本,该脚本包含来自osgeo
的导入,但可执行文件失败,并返回ImportError: No module named '_gdal'
。在
我把我的剧本精简成一行:
import osgeo
在Python(版本3.3.3)中运行时,一切正常。我试过用冷冻水和冰激凌冷冻。两个都报告缺少模块:? _gdal imported from osgeo
(以及其他模块),但成功地冻结了脚本。然后exe因上述ImportError而失败。在
我尝试过在python中导入_gdal
,而且它很有效。我尝试手动将osgeo
模块包含在冻结选项中,但仍然得到相同的错误。在
这里有一个类似的问题: Importing GDAL with cx_Freeze, Python3.4 但这可能不是cx2ex冻结的问题,因为py2exe也会发生这种情况(它现在已经对python3提供了实验支持)。在
有人知道怎么解决这个问题吗?在
我找到了解决办法。我编辑了
osgeo\__init__.py
文件,并修改了第13行,如下所示:importosgeo._gdal
。这是可行的,但只有当模块osgeo.\ gdal被手动包括在冻结时。@我猜你的解决方案也有同样的效果。在注意,如果需要的话,必须在}(第18行)模块中应用相同的修改(})。这意味着冻结时也必须手动包括这些。我的冻结命令现在看起来像这样:
osgeo.ogr
(第18行)和{import osgeo._ogr
和{python cxfreeze.py module1.py include-modules=osgeo._gdal,osgeo._ogr,osgeo._osr
。在谢谢@Thomas K的帮助。在
相关问题 更多 >
编程相关推荐