Python下gdal的安装,及解决运行过程中可能出现的memory error问题

最近迷上了用python处理卫星数据,gdal包是不得不提的一个。本篇文章写于程序运行时的等待过程中,时间紧迫不免有些疏漏。另,我本人也只是一只菜鸡,写此教程的目的,也在于总结这两星期的经验教训,祭奠一下走过的弯路浪费的时间。希望各位大佬们不要笑话,也请多多提建议,帮助小张同学提高业务能力。废话不再多说,进入正题!!!

"gdal"是一个开源的、功能强大的栅格文件读写库。可是它的"安装"有时却让小白们感到疼痛;好不容易跟着教程安装成了,在运行过程中,当需要处理的数据太大时,却被频频提示"内存错误" – 如,memoryerror:unable to allocate 43.9 mib for an array with shape (4800, 4800) and data typeuint16。

出现"memoryerror"的原因有很多。其中一种是因为“python版本过低/在win64操作系统上安装了win32版本的python”;当安装的是32位的python时,即使用户将”虚拟内存”的设置的再大,也无法从根本上解决” memoryerror”(虚拟内存的设置请参照https://zhuanlan.zhihu.com/p/37332255)。原因在小节一中详述。本篇教程将从最基本的windows系统下的python安装开始讲起,希望可以帮助遇此问题的虫友。

教程目录如下:

一.Python的下载、安装和配置

二.当电脑中装有多个python版本时,如何使他们兼容

三.用”pip install”法在python下安装gdal库

四.配置windows虚拟内存

##############################################################################

一.Python的下载、安装和配置

电脑上装有arcgis等软件的小白会发现,python2.7早已顺带被装载了自己的电脑里。需注意的是 –此python版本的环境是32位的!即使电脑内存非常大,处理非常大的卫星数据时,你的32位python也非常有可能遇到"memoryerror"问题。这是因为"32位操作系统可以寻址2的32次方个字节的内存范围,64位操作系统则可寻址2的64次方个字节的内存范围。因此,32位的操作系统理论上只能使用约4GB的内存,要是想让程序使用超过4GB的内存,就要选择64位的操作系统。"

图一: Python版本的选择

Python可以在https://www.python.org/上免费下载,我选择了64位的Python 3.8.6。安装包选择的是Windows x86-64 executable installer (图一), 因为它更方便用户自定义”程序储存路径”以及自动添加”path环境变量”。 自定义”程序储存路径” 就不赘述了,个人认为路径越简单越好(我就直接存储为"C:\python3.8" , 以下的讲解也以此为示范,大家可以根据自己的便利选择储存路径)。


图二: 检查path下是否已经添加"C:\python3.8\Scripts\" 和"C:\python3.8\"

安装好后,检查系统环境变量的path (图二)(检查方式请参照: https://jingyan.baidu.com/article/8ebacdf02d3c2949f65cd5d0.html)。若打开系统变量的path,发现已经有"C:\python3.8\Scripts\" 和"C:\python3.8\" ,则说明path已经被设置好;若没有的话,可自己手动添加。

二.当电脑中装有多个python版本时,如何使他们兼容

有一个需要注意的问题- 当电脑里安装了多个版本的Python时,并尝试装一些包如gdal或者更新pip时,会报错。那么如何配置才能使他们兼容,不影响用户的使用呢?原则就是将不同版本下的"python.exe"和"pip.exe"分别命名。如,将Python3.8.6的命名为”python38.exe”和”pip38.exe”; 将Python2.7.5的命名为”python27.exe”和”pip27.exe”。具体请参照https://blog.csdn.net/qq_40260867/article/details/84062299。在此不做赘述。

我的电脑里同时装有Python3.8.6和Python2.7.5。打开CMD检查一下”兼容”是否设置成功 (打开cmd的方式https://jingyan.baidu.com/article/e4511cf329b0e42b845eaf2e.html)。分别输入python27和python38,若像如图三显示的那样,就是设置成功了。


图三: 在cmd中进一步检查两个版本的python的兼容是否设置妥当

三.用”pip install”法在python下安装gdal库

先在https://www.lfd.uci.edu/~gohlke/pythonlibs/里下载合适版本的gdal whl文件。版本的选择主要取决于windows操作系统的位数python的版本。我是64位操作系统,准备在python3.8.6下安装gdal库,所以选择下载”GDAL‑3.1.3‑cp38‑cp38‑win_amd64.whl”(图四)。cp后的38表示支持python3.3.6,amd后的64表示支持64位操作系统。记住下载gdal whl文件的储存位置。我的存在"C:\Users\zhang\Downloads"下。


 图四: gdal whl 文件的版本选择

gdal通过cmd用"pip instal"语法安装。在第二小节里,我将python3.8.6的pip命名为了pip38,所以在这里用pip38而不是pip。pip38 install后接续下载的gdal whl文件的储存地址。如,pip38 install C:\Users\zhang\Downloads\GDAL-3.1.3-cp38-cp38-win_amd64.whl (图五

图五: cmd中用pip install 安装gdal包;安装成功后会显示"successfully"等字样,因为我已经安装过了,所以此出安装的结果显示的是"Requirement already satisfied"

五. 配置windows虚拟内存

至此,gdal已经成功在python3.8.6中成功安装了。为了进一步确保程序运行过程中,不会再出现内存错误,我们可以进一步配置windows虚拟内存。虚拟内存的设置请参照https://zhuanlan.zhihu.com/p/37332255 。内存可以根据自己的需要自定义设置大小。由图六可以看到,目前C盘下,我的可用空间为:37686MB。我将初始大小以及最大值均设置为: 30000MB。当然这是一个比较夸张的设定。为了不要再由内存错误,我也是拼了。

设置好后重启电脑。然后在python3.8中运行代码。无错!快速!流畅!开心的蹦蹦跳跳!!!!


图六: 虚拟内存的设置
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342