Python中如何解决ImportError:No Module Named arcpy问题
来源:互联网 发布:mysql清空表数据 编辑:程序博客网 时间:2024/05/17 02:51
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
可以看到现有的模块搜索路径
>>> 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
,既然路径中不含这个路径,加进去就可以咯。
>>> 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
文件中定义的。
所以如果需要定义新的模块路径,就可以自定义一个arcpy.pth
文件,放入.\Python\Lib\site-packages
文件夹即可!
文件的格式如下:
C:\\Windows\\system32C:\\Python27\\ArcGIS10.3\\Lib\\idlelibC:\\Windows\\system32\\python27.zipC:\\Python27\\ArcGIS10.3\\DLLsC:\\Python27\\ArcGIS10.3\\libC:\\Python27\\ArcGIS10.3\\lib\\plat-winC:\\Python27\\ArcGIS10.3\\lib\\lib-tkC:\\Python27\\ArcGIS10.3C:\\Python27\\ArcGIS10.3\\lib\\site-packagesF:\\Program Files (x86)\\ArcGIS\\Desktop10.3\\binF:\\Program Files (x86)\\ArcGIS\\Desktop10.3\\arcpyF:\\Program Files (x86)\\ArcGIS\\Desktop10.3\\ArcToolbox\\Scripts
方法二和方法三看似是一样的,但效果也有不同,譬如在一台计算机上安装了两个版本的Python,方法二修改系统变量的方法可以保证两个版本的Python均可使用添加的模块搜索路径,而方法三则需要将.pth
文件复制到每一个安装目录中。whatever,只要问题解决了就行了,不是吗?
- Python中如何解决ImportError:No Module Named arcpy问题
- Python中如何解决ImportError:No Module Named arcpy问题
- ImportError: No module named arcpy
- 解决centos中"ImportError: No module named _tkinter"问题
- 如何解决“ImportError: No module named pylab”
- 解决ImportError: No module named zlib问题
- 解决“IMPORTERROR: NO MODULE NAMED _SQLITE3”问题
- 解决ImportError: No module named zlib问题
- 解决 ImportError: No module named 'serial' 问题
- python ImportError: No module named 的问题
- Python ImportError:No module named的问题
- python ImportError: No module named
- python : ImportError: No module named '****'
- python解决ImportError: No module named google.protobuf
- python解决ImportError: No module named google.protobuf
- centos7 python ImportError: No module named 'zlib' 解决
- python解决ImportError: No module named google.protobuf
- Python "python ImportError: No module named XXX" 问题
- 陈怡暖:2015.5.11早间现货黄金白银操作建议
- 括号匹配问题
- Linux查看CPU和内存使用情况
- 小技巧:图片不存在的时候的容错处理
- 对偶问题
- Python中如何解决ImportError:No Module Named arcpy问题
- Dundas Dashboard设计器介绍(一)
- Quartz.net2.2初体验
- 优先队列基础知识(四)---二项队列
- oracle10g/11g 新特性十一(表空间管理)
- windows系统下的远程访问
- 爬图片-python快捷办法
- QT for Android HelloWorld实现
- event.preventDefault()