这个问题因为偏离主题而被put on hold at the GIS Stack Exchange。所以我想我会尝试使用StackOverflow。
我已经使用Python了一段时间,并且已经认识到虚拟环境是一件好事,因为它们会阻止未来的软件包更新,从而破坏您已经花费很长时间的宝贵代码。我花了几天时间尝试使用fink安装的gdal,geos和proj4库(见Python 3.4 crashes when producing some – but not all – Cartopy maps with segmentation fault 11)在Mac上的Python 3.6虚拟环境中使用cartopy。但是,似乎即使在虚拟环境中,代码仍然依赖于那些外部库。这似乎打败了使用虚拟环境的目标,因为如果外部库被更新,它就有可能破坏在虚拟环境中开发的任何GIS代码,即使虚拟环境中的Python包保持不变。我遇到这种情况的唯一一次是与GIS相关的软件包(但很明显,它也可能出现在其他领域)。
是否有可能为GIS创建一个Python虚拟环境,该环境最初可以使用外部库和软件构建,但是当外部库和框架被更改或更新时,它是自包含的并且不受影响?
答案 0 :(得分:1)
Python虚拟环境非常棒,但是当您尝试隔离基于C的依赖项时,您发现并不是真的有帮助。
Docker是一种解决方案,但对您的情况可能过度。 Conda是一个环境管理器,通过处理Python包及其所有依赖项来解决这个问题,无论它们是用什么语言编写的.Cartopy和许多其他常见的GIS包都是通过{预先构建的{3}}存储库。
一旦安装了Conda,您就可以这样做:
conda create -n my_cartopy_env -c conda-forge cartopy
应该在自己的环境中为您安装cartopy及其所有依赖项,并且它适用于Windows,OS X或Linux。魔术: - )