1. 程式人生 > >Python中如何解決ImportError:No Module Named arcpy問題

Python中如何解決ImportError:No Module Named arcpy問題

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,只要問題解決了就行了,不是嗎?