ArcGIS自带Python 2.7.5环境配置指南:pip、GDAL与arcpy实战

发布时间:2026/10/3 3:51:52
ArcGIS自带Python 2.7.5环境配置指南:pip、GDAL与arcpy实战 2015年前后搞GIS数据处理的人电脑里基本都装着一个ArcGIS 10.2.2。这个版本自带了一套Python 2.7.5环境位置通常在 C:\Python27\ArcGIS10.2\python.exe。熟悉这套环境的朋友都懂一个尴尬能用是能用但想把第三方库装进去简直要命——默认连pip都没有装个gdal能折腾一下午更别提在网上搜“arcpy调用报错”时那种心凉半截的感觉。这篇东西就是给所有还被这套老环境困住的人准备的。我会把ArcGIS 10.2.2自带Python 2.7.5的完整配置过程拆开讲从最开始的pip安装到gdal二进制包的选择与调用再到arcpy在外部IDE里的正确运行方式中间穿插这些年踩过的坑和摸索出来的经验。不管你是刚接触arcpy的学生还是被数据预处理逼到抓狂的工程师只要按着这个流程走一遍基本不会再被环境问题卡住。1. 项目背景与环境梳理为什么这套老Python让人又爱又恨1.1 自带Python环境的来龙去脉ArcGIS 10.2.2安装的时候默认会在系统盘装一个Python 2.7.5而且是32位版本。这个Python不是普通的那种独立Python它和ArcGIS Desktop深度绑定Python安装目录旁边就是ArcGIS的安装目录桌面端的arcpy模块也正是注册在这个解释器里。很多人一开始会犯一个错误看网上教程说“安装Python包用pip”就在另外单独装的Python里pip install arcpy结果怎么装都装不上。原因很简单arcpy不是一个可以从PyPI直接下载的普通包它必须跟着ArcGIS Desktop一起被注册到指定解释器里。想调用arcpy就必须使用这套自带的Python 2.7.5环境绕不开。1.2 核心痛点到底在哪这套环境最折磨人的是以下几个点。第一它没有pip。Python 2.7.5本身是比较老的内置版本10.2.2发布时还没有强制标配pip所以你想装gdal、numpy这类包得先把pip补上。更麻烦的是如果直接去网上找最新的get-pip.py运行时会发现脚本检测到Python版本太老提示“Python 2.7 is no longer officially supported”然后装不上合适的pip版本。第二包版本选择极其苛刻。这套环境是32位的而且Python是2.7.5所以所有想装进去的第三方库都必须是对应的cp27、win32版本。用64位的包去装pip会直接报“not a supported wheel on this platform”。第三arcpy只在ArcGIS的Python解释器里才能正常工作换任何第三方解释器都没用。并且如果Desktop许可没激活在外部IDE里运行arcpy脚本还会报许可错误这个问题稍后会详细讲。1.3 环境配置的整体目标我给自己定了三个验收标准所有配置完成之后必须满足这三条打开命令行输入python能进入ArcGIS自带的Python 2.7.5交互环境输入python -m pip --version能看到pip版本且能正常从镜像源下载安装包在Python交互环境里分别执行import arcpy和from osgeo import gdal都不报错。这三个标准建议你也记一下后面每一步操作完都可以回头验证减少最后排查的复杂度。环境配置这种事情最怕的就是一开始没想清楚目标装到一半发现装错版本被迫推倒重来。2. pip安装与管理给老Python补上包管理工具2.1 先确认Python环境是否正确打开命令行先执行下面两条命令看环境长什么样。where python python --version如果输出里能看到类似 C:\Python27\ArcGIS10.2\python.exe 的路径说明系统PATH里的Python就是ArcGIS自带的那个这是最理想的状态。如果where python输出的是其他路径比如C:\Users\你的用户名\AppData\Local\Programs\Python那说明电脑里装了不止一套Python配置时要格外小心。我建议把ArcGIS的Python放到PATH最前面。具体做法是打开系统环境变量在Path变量中把以下两个路径加到最前面C:\Python27\ArcGIS10.2 C:\Python27\ArcGIS10.2\Scripts现在很多新版Windows用“设置”里的环境变量界面也能改改完记得重开一个命令行窗口再验证。把Scripts目录加入PATH是给后面pip命令做铺垫很多初学者改了Python路径但忘了加Scripts结果pip命令照样识别不了。另外教大家一个小技巧在ArcMap里打开Python窗口执行import sys; print(sys.executable)也能看到当前脚本解析器的完整路径。如果这个路径和你命令行里看到的不是同一个那就说明哪里串了先理顺再继续。2.2 安装pip的正确姿势Python 2.7.5没有内置ensurepip模块所以不能像新版Python那样直接python -m ensurepip --upgrade。常规做法是从网上下载get-pip.py执行但为了让老版本Python也能正常下载建议加镜像源参数。先把get-pip.py下载到本地然后在命令行进入该文件所在目录执行python get-pip.py --index-url https://pypi.tuna.tsinghua.edu.cn/simple加上--index-url参数的目的是让安装过程直接走镜像源避免官方源下载慢或超时导致的安装失败。get-pip.py会根据当前Python版本自动匹配pip版本对于Python 2.7.5来说最终安装的pip版本通常是pip 20.3.4这是最后一个支持Python 2.7的版本。如果get-pip.py在执行过程中报错比如提示找不到匹配版本或者SSL证书问题还有一个备用方案去PyPI官网手动下载pip-20.3.4-py2.py3-none-any.whl和setuptools-44.1.1-py2.py3-none-any.whl然后先安装setuptools再装pip。python setuptools-44.1.1-py2.py3-none-any.whl不对wheel文件不能直接这样执行。正确做法是先解压或用官方源码包。推荐下pip的源码包tar.gz格式解压后进入目录执行python setup.py install这个方法虽然古老但兼容性最好遇到网络问题也不慌。流程是先装setuptools源码包再装pip源码包最后python -m pip --version验证。2.3 解决“pip不是内部或外部命令”的三条路这个问题在热搜词里出现频率极高说明很多人卡在这。装了pip却没法直接用通常是三种情况。第一种环境变量没配好。检查C:\Python27\ArcGIS10.2\Scripts是否在Path里很多程序安装时不会自动改系统PATH需要手动加。第二种当前命令行的PATH未刷新。改完环境变量后必须重新打开命令行窗口才能生效旧的cmd窗口不会自动更新。第三种pip.exe确实没生成。这种情况可以在命令行输入python -m pip --version测试如果能显示版本说明pip模块装好了只是可执行文件没生成。用python -m pip install xxx就能正常使用。我建议无论哪种情况都直接养成写python -m pip而不是写pip的习惯。这样既绕开了可执行文件路径的问题也能保证操作的是当前解释器对应的pip不会出现pip装包装到了另一个Python里的“灵异事件”。注意ArcGIS自带Python 2.7.5的pip最高只能用到20.3.4千万不能执行python -m pip install --upgrade pip把它升到21以上。一旦升级pip会直接因为不再支持Python 2.7而罢工。2.4 pip镜像源配置pip装好之后第一步就是换源。用官方源装包速度实在不稳定几十KB/s的速度在装大型包的时候能让人崩溃。新建配置文件手动配置。在C:\Users\你的用户名\AppData\Roaming\pip目录下新建pip.ini写入[global] index-url https://pypi.tuna.tsinghua.edu.cn/simple trusted-host pypi.tuna.tsinghua.edu.cn也可以使用阿里云的镜像源https://mirrors.aliyun.com/pypi/simple/。两个都很快看个人习惯。如果你用的是pip 20.3.4也可以直接用命令配置python -m pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple配置完成后执行python -m pip download requests -d D:\temp_test 测试一下如果能正常下载就说明pip和镜像源都通了。3. GDAL库安装与调用要点版本匹配是第一原则3.1 Python 2.7.5能用的GDAL范围gdal是处理栅格数据绕不开的库但给这套老环境装gdal方向不对折腾一天都白费。关键是三点Python 2.7、32位、CPython。ArcGIS自带Python 2.7.5是32位程序所以必须下载win32版本的gdal。如果你去网上下载了一个64位的gdal安装包pip会明确告诉你“not a supported wheel on this platform”听着就想摔键盘。推荐的版本是GDAL 2.2.4的cp27 win32版本文件名类似GDAL-2.2.4-cp27-cp27m-win32.whl。如果安装后提示缺少MSVCP140.dll说明系统缺Visual C 2015-2022运行库装一下运行库就能解决。如果不想装运行库可以退一步选择GDAL-1.11.2-cp27-cp27m-win32.whl这个版本是VC9编译兼容性更好但功能比2.x略老。3.2 安装GDAL的完整步骤在Python库网站上搜“gdal cp27 win32”下载对应的whl文件。不要下载压缩包解压然后手动放文件那样DLL依赖、路径全得自己处理ession非常容易出问题。拿到whl文件后在命令行进入文件所在目录执行python -m pip install GDAL-2.2.4-cp27-cp27m-win32.whl看到Successfully installed GDAL-2.2.4的提示就说明装好了。这里提一下直接用python -m pip install gdal会让pip自动去镜像源找最新的gdal但最新gdal几乎都只支持Python 3.x所以必须下载指定的whl本地安装。装完之后验证from osgeo import gdal print(gdal.VersionInfo())能打印出版本号就没问题了。还要顺手检查一下osr模块后续做投影转换会用到from osgeo import osr, gdalconst3.3 关于GDAL_DATA和DLL依赖有些时候gdal能import成功但读取特定坐标系影像时报错提示找不到投影定义文件。这种情况大概率是GDAL_DATA环境变量没配。把ArcGIS安装目录下的pedata数据路径通常在C:\Program Files (x86)\ArcGIS\Desktop10.2\pedata\gcs设置成GDAL_DATA或在代码开头写import os os.environ[GDAL_DATA] rC:\Program Files (x86)\ArcGIS\Desktop10.2\pedata\gcs这样再进行坐标转换时gdal就能找到对应的椭球体、基准面定义文件。DLL依赖方面gdal的wheel包通常会带所需的DLL但偶尔会冲突。一个典型问题是同时装了numpy版本不对导致import时报“DLL load failed”。解决思路是先把numpy降级到适配Python 2.7的版本推荐numpy 1.16.6这是最后一个支持Python 2.7的版本和gdal 2.2.4配合很稳定。3.4 用一个小脚本验证gdal和arcpy能同时工作很多时候单独装都没问题但gdal和arcpy放到同一个脚本里就会炸。实测在ArcGIS自带的Python 2.7.5环境里这两个是可以共存的。用下面这段脚本验证一下能跑通说明环境基本稳了import arcpy from osgeo import gdal # 检查一个栅格文件 raster_path rD:\data\dem.tif if arcpy.Exists(raster_path): ds gdal.Open(raster_path) if ds: print(宽度: %s, 高度: %s % (ds.RasterXSize, ds.RasterYSize)) print(波段数: %s % ds.RasterCount) ds None else: print(gdal打开失败)如果这里能同时输出栅格尺寸和波段数说明arcpy和gdal都可以正常调用。4. arcpy调用从脚本环境到实际运行4.1 arcpy到底是什么arcpy是ArcGIS Desktop提供的一套Python站点包里面封装了ArcToolbox里几乎所有工具函数本质上是一组可以直接用Python调用的地理处理接口。它和普通独立安装的开源GIS库不一样必须绑定ArcGIS的许可机制才能运行这就是为什么换解释器会报错的原因。有朋友问能不能用Anaconda里装的Python通过加路径的方式import arcpy答案是不行。arcpy不仅依赖Python解释器里的site-packages注册信息还依赖ArcGIS底层的C运行库和许可服务。直接改sys.path硬加载多半会报“No module named arcpy”或者初始化失败。4.2 正确调用arcpy的几种方式调用arcpy有三种常见场景。第一种是在ArcMap内置的Python窗口里运行。打开ArcMap右侧有一个Python窗口直接输入代码就能执行适合快速调试工具参数或者写一两句命令做即时处理。这个方式的优点是绝对能用缺点是没有语法高亮代码长了不方便维护。第二种是用ArcGIS自带的IDLE。在开始菜单里找“ArcGIS”文件夹下有一个Python 2.7的IDLE快捷方式打开后可以把脚本保存在.py文件里F5运行比Python窗口舒服一些。但注意要确认打开的IDLE对应的是ArcGIS的Python解释器而不是系统里其他Python。第三种是在PyCharm或VSCode这些外部IDE里运行这是最推荐的日常开发方式。在PyCharm里打开Settings找到Project Interpreter先点右上角齿轮然后选择“Add”在下拉菜单中选“Existing environment”浏览到C:\Python27\ArcGIS10.2\python.exe确认即可。VSCode则在命令面板执行“Python: Select Interpreter”选择同样的路径。在外部IDE里运行arcpy脚本之前我还建议先手工创建一个临时的test.py文件放在项目根目录里面只写一行import arcpy然后print(arcpy.GetInstallInfo()[Version])。确认能输出版本号再开始写正式脚本。这样能把环境问题提前暴露出来避免写到一半才发现解释器选错了。4.3 一个可落地的arcpy脚本示例写一个实际功能来演示调用方式。假设要修复某要素类里的几何错误这是论坛里问得特别多的需求。import arcpy fc rD:\GIS_Project\data.gdb\roads arcpy.env.workspace rD:\GIS_Project\data.gdb # 修复几何 result arcpy.RepairGeometry_management(fc) print(修复完成: %s % result.getOutput(0)) # 检查要素数量 count arcpy.GetCount_management(fc) print(要素数量: %s % count)不少初学者会把要素路径写错建议在脚本开头加一句exists判断if not arcpy.Exists(fc): raise Exception(要素不存在请检查路径)这样出错时能立刻知道是路径问题而不用去翻乱糟糟的报错堆栈。如果你的数据在gdb里注意路径中用反斜杠加gdb文件名再接要素类或者统一用r原始字符串避免转义符给自己挖坑。4.4 两个容易混淆的操作定义投影和投影变换既然讲到arcpy就顺带把定义投影和投影变换的区别说一下这两个概念在论坛里常年被混着问。定义投影对应arcpy.DefineProjection_management工具它的作用只是给数据“贴上”坐标系标签不会改变任何坐标数值。比如你有一个数据明明是按经纬度存的但属性表里坐标系是Unknown这时候用Define Projection给它指定为WGS84坐标系数值不会变但ArcGIS终于知道这些数值是什么含义了。投影变换对应arcpy.Project_management工具它是真正做坐标转换的。比如把WGS84的数据投影到Web Mercator坐标数值会通过数学计算发生变化。两个工具一个是贴标签一个是做计算千万别搞反。如果你把一个Unknown坐标系的数据直接用Project工具去转ArcGIS会因为不知道源坐标系而报错或输出乱数据。顺带提一下arcpy裁剪影像的常见写法import arcpy arcpy.env.workspace rD:\GIS_Project in_raster dem.tif clip_features study_area.shp out_raster dem_clip.tif arcpy.Clip_management(in_raster, #, out_raster, clip_features, -9999, NONE)这个示例里第二个参数传#表示使用裁剪要素的外包矩形范围第五个参数是NoData值需要根据原始栅格的NoData设置合理填写否则裁剪出来的栅格边缘会出现奇怪的黑色色块。5. 常见问题与排查技巧实录5.1 经典报错速查表整理一份问题速查表遇到类似情况可以直接照着处理。问题现象可能原因解决思路pip不是内部或外部命令Scripts目录不在PATH里把C:\Python27\ArcGIS10.2\Scripts加入PATH重开命令行pip fatal error in launcher: unable to create process usingPython目录被移动或pip.exe与当前解释器不匹配用python -m pip install --upgrade --force-reinstall pip重装pipimport gdal报No module named gdal没装gdal或装了别的Python版本下载GDAL-2.2.4-cp27-cp27m-win32.whl本地安装import gdal报DLL load failed缺VC运行库或numpy版本不匹配安装VC运行库或把numpy降为1.16.6import arcpy报No module named arcpy外部IDE选错了解释器解释器切换到C:\Python27\ArcGIS10.2\python.exe外部运行arcpy提示许可错误Desktop许可未激活或外部环境下无法获取许可先在ArcMap里正常打开一次确认许可激活浮动许可可配置ARCGIS_LICENSE_FILEpip install时报SSL错误老版本Python去官方源下载证书验证失败命令行加--index-url镜像源或者配置pip.ini5.2 pip命令失效的深层处理在Windows环境里“pip did not provide a command”这个问题算是老演员了。曾经我把Python目录从D盘拷到E盘结果所有脚本快捷方式带的旧路径全部失效运行任何pip命令都是“unable to create process”。这种情况下别纠结直接删掉Scripts目录下的pip.exe、pip2.exe这些文件然后重新执行一次python -m pip install --upgrade --force-reinstall pip可执行文件会按新路径重新生成。另外老手在写批处理或定时任务时都习惯写全路径比如C:\Python27\ArcGIS10.2\python.exe -m pip install xxx。这样做的好处是不受PATH环境影响就是账面上看着有点啰嗦但胜在稳。5.3 外部IDE里运行arcpy的许可问题外部IDE里能import arcpy但一执行工具就报“ArcGIS Desktop需要有效的许可才能运行后台地理处理工具”这是典型的许可初始化失败。原因是外部IDE的进程没有像ArcMap那样自动加载许可。最简单的验证方法是在ArcMap里先打开运行一次Python窗口执行arcpy.CheckOutExtension(Spatial)或任意一个工具让桌面软件的许可机制在系统里激活一次。之后外部IDE再运行脚本往往就正常了。如果还不行检查ArcGIS Administrator里Licensing Assistant确认许可已安装并设置为可用状态。浮动许可环境还有个技巧给系统加一个环境变量ARCGIS_LICENSE_FILE值填许可服务器的端口和地址格式是portserver。这样外部脚本就能连接到浮动许可服务了。5.4 检查尖锐角、画线等小功能的思路有朋友在网上找“检查尖锐角插件”其实这类小功能用arcpy几十行就能搞定。核心思路是用arcpy的SearchCursor逐要素读取折点坐标然后计算相邻线段之间的夹角小于预设阈值的标记为尖锐角。不需要装插件也不用在网上求别人编写的免费源码自己按这个思路写反而更可控。如果想在ArcMap里画线步骤也很简单新建要素类后在编辑器工具栏点击“编辑”选中要编辑的图层点击“构造线”图标然后在视图里单击鼠标左键落点双击完成线段。注意画线时不要打开“捕捉”却关掉“折点捕捉”否则画出来的线容易出现重叠压盖这也是热搜词里说明“arcgis不要压盖线”的原因。6. 最后再分享一点个人经验这套配置我前前后后在不同电脑上折腾过很多次过程中犯过最傻的错误就是试图把Python 2.7.5升级到Python 2.7.18结果意味着重装所有第三方包结果还踩了一堆依赖坑。后来学乖了整个环境固定下来后就不再轻易动版本只改项目代码不碰环境本身。还有一个小建议把这套环境里的依赖记录下来比如用python -m pip freeze requirements_arcgis.txt万一以后换电脑直接读这个文件就能快速恢复环境。ArcGIS的Python环境虽然老旧但只要配置得当跑数据预处理、批处理老项目完全够用。希望这份攻略能帮你把环境这关一次过掉省下来的时间早点去处理真正的空间数据问题。