Python中如何解決ImportError:No Module Named arcpy問題
阿新 • • 發佈:2018-11-25
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,只要問題解決了就行了,不是嗎?