Python中如何解决ImportError:No Module Named arcpy问题

xiaoxiao2021-02-28  73

Python中如何解决ImportError:No Module Named arcpy问题

2015-05-11 09:23 本站整理 浏览(44) Python是ArcGIS的脚本语言,ArcGIS安装时会安装ArcPy,即以成功的arcgisscripting模块为基础并继承了arcgisscripting功能进而构建的 站点包,其目的是以高效实用的方式通过Python执行地理数据处理、空间分析等GIS的核心功能。 但如果在ArcGIS安装时没有安装Python,而是从Python官网重新安装相应版本的Python,其中不含ArcPy,当 import arcpy 的时候就会出现 ImportError: No module named 'arcpy' 。 这种情况对于新手来说很痛苦, 主要原因在于执行 import 操作时,Python会按照一定的路径去搜索被导入的模块,如果没找到自然就会报错,而重新安装Python最大的问题就在于 ArcPy的路径并不在Python模块搜索路径中。下面就从三个方面解决这一问题: (本文中以ArcPy为例,实际上自己编写的第三方模块是完全一样的情况,第三方模块的安装 请点这里)

方法一:将路径加入模块搜索路径

模块搜索路径中不存在需要添加的模块路径?加入进去就好了呀!简单粗暴直接。 通过 sys.path 可以看到现有的模块搜索路径 [code]>>> import sys >>> sys.path ['', 'C:\\Python35-32\\Lib\\idlelib', 'C:\\Python35-32\\python35.zip', 'C:\\Python35-32\\DLLs', 'C:\\Python35-32\\lib', 'C:\\Python35-32', 'C:\\Python35-32\\lib\\site-packages'] 一般来说,ArcPy的路径在ArcGIS Desktop的安装目录下而非Python的安装目录下,如 F:\Program Files (x86)\ArcGIS\Desktop10.3\ArcPy\arcpy ,既然路径中不含这个路径,加进去就可以咯。 [code]>>> sys.path.append(r'F:\Program Files (x86)\ArcGIS\Desktop10.3\arcpy') >>> sys.path ['', 'C:\\Python35-32\\Lib\\idlelib', 'C:\\Python35-32\\python35.zip', 'C:\\Python35-32\\DLLs', 'C:\\Python35-32\\lib', 'C:\\Python35-32', 'C:\\Python35-32\\lib\\site-packages', 'F:\\Program Files (x86)\\ArcGIS\\Desktop10.3\\arcpy'] 这样就可以 import arcpy 了! 当然,这种方法有一个弊端,添加只能是一次性的,下一次重启命令行窗口, sys.path 又恢复原样了,所以 只适合于单次添加模块。

方法二:修改环境变量

用户可以通过设置系统环境变量 PYTHONPATH ,这样环境变量的内容就可以自动添加到模块搜索路径中。 这算是比较简便的方法了。

方法三:增加.pth文件

Python安装之后, sys.path 中自带的那些模块搜索路径都是如何定义的呢? 许多都是在 .\Python\Lib\site-packages 文件夹中的 .pth 文件中定义的。 所以如果需要定义新的模块路径,就可以自定义一个 .pth 文件,放入 .\Python\Lib\site-packages 文件夹即可! 文件的格式如下: [code]C:\\Windows\\system32 C:\\Python27\\ArcGIS10.2\\Lib\\idlelib C:\\Windows\\system32\\python27.zip C:\\Python27\\ArcGIS10.2\\DLLs C:\\Python27\\ArcGIS10.2\\lib C:\\Python27\\ArcGIS10.2\\lib\\plat-win C:\\Python27\\ArcGIS10.2\\lib\\lib-tk C:\\Python27\\ArcGIS10.2 C:\\Python27\\ArcGIS10.2\\lib\\site-packages C:\\Program Files (x86)\\ArcGIS\\Desktop10.2\\bin C:\\Program Files (x86)\\ArcGIS\\Desktop10.2\\arcpy C:\\Program Files (x86)\\ArcGIS\\Desktop10.2\\ArcToolbox\\Scripts C:\\Python27\\Lib\\idlelib C:\\Windows\\system32\\python27.zip C:\\Python27\\DLLs C:\\Python27\\lib C:\\Python27\\lib\\plat-win C:\\Python27\\lib\\lib-tk C:\\Python27 C:\\Python27\\lib\\site-packages 方法二和方法三看似是一样的,但效果也有不同,譬如在一台计算机上安装了两个版本的Python,方法二修改系统变量的方法可以保证两个版本的Python均可使用添加的模块搜索路径,而方法三则需要将 .pth 文件复制到每一个安装目录中。whatever,只要问题解决了就行了,不是吗?
转载请注明原文地址: https://www.6miu.com/read-69631.html

最新回复(0)