我在部署ArcGIS API for Python时踩到的坑

 

ArcGIS API for Python相比于其他ESRI产品,还是很年轻。我在部署时踩到了坑,网上也找不到解决方法,很是煞风景,也很打击学习的积极性。

今天回顾一下,做个总结吧。一方面自己备忘,另一方面希望能帮到同行的小伙伴。

看ESRI的官方文档,ArcGIS API for Python部署很简单呀:

1 安装Anaconda

2 python环境中安装Arcgis包

关于版本要求,ESRI的官方文档是这样写的:

我装了Anaconda3-4.4.0(内置Python3.6),然后在默认Python环境下“conda install -c esri arcgis”安装ArcGIS包。一切顺利。

然后用jupyter notebook

出来的结果是MapView(basemaps=[‘dark-gray’, ‘dark-gray-vector’, ‘gray’, ‘gray-vector’ ……没有出来地图!

打开浏览器的开发者模式,看抓包信息里面,没有去调瓦片。

问题原因:Python3.6环境不支持ArcGIS API for Python 1.4.2

解决办法:新建Python3.5环境(conda create -n agsenv python=3.5),在此环境下安装ArcGIS API for Python(conda install -c esri arcgis)

分析:可能是arcgis1.4.2出文档时python最新版本还是3.5的吧。ESRI以为以后的Python版本也不会有问题。而我也天真地相信了。

又过了几天,我在一台新电脑上部署环境。这次我特意下载了Anaconda3-4.2.0-Windows-x86_64(内置Python3.5)。装好了Anaconda,在默认base环境下安装Arcgis包。

装的过程中,会出现 ImportError: cannot import name ‘ensure_dir_exists‘ 这样的错误。

但是import arcgis还是正常的

所以没有管它。但是运行jupyter notebook报错:

网上找到解决问题的方法:

conda update jupyter_core jupyter_client

jupyter升级到了最新版本,jupyter notebook正常了。

但是arcgis好像还是不好使。

仅仅升级jupyter是不够的,(我理解是因为jupyter版本低的原因,arcgis向jupyter中添加mapview失败)。因此需要卸载掉Arcgis包,再重新安装。当然如果是先升级jupyter,再安装arcgis包,就不会有这个问题了。

conda uninstall esri arcgis

conda install -c esri arcgis

这样就一切正常了

其他注意事项:

1 Anaconda装完后,需要添加国内清华的镜像。

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes

2 在cmd或者Powershell中执行conda命令,必须用管理员权限,否则你会卡在这一步(如果我没记错的话):

3 安装Anaconda安装路径不能带空格。默认路径就可以,我还是习惯把它放到C盘根目录下。

4 jupyter notebook,弹出空白页面没有内容的,建议使用最新版的谷歌浏览器

5 jupyter notebook,弹出“http://localhost:8888/tree”错误页面的,请尝试“http://127.0.0.1:8888/tree

最后说一句:我也不知道往默认的python环境下安装东西是不是个不好的习惯。是不是正常的都应该新建个环境?有内行的小伙伴,望不吝赐教。