1

这个问题在 GIS Stack Exchange上因离题而被搁置。所以我想我会尝试使用 StackOverflow。

我使用 Python 已经有一段时间了,并且已经接受了虚拟环境是一件好事的想法,因为它们可以防止未来的软件包更新破坏您花费大量时间开发的宝贵代码。我刚刚花了好几天的时间试图让 cartopy 在 Mac 上的 Python 3.6 虚拟环境中工作,使用 fink 安装的 gdal、geos 和 proj4 库(请参阅Python 3.4 在生成一些 - 但不是全部 - 带有分段的 Cartopy 地图时崩溃故障 11)。但是,似乎即使在虚拟环境中,代码仍然依赖于那些外部库。这似乎违背了使用虚拟环境的目的,因为如果更新了外部库,即使虚拟环境中的 Python 包保持不变,它也存在破坏在虚拟环境中开发的任何 GIS 代码的风险。我遇到这种情况的唯一一次是与 GIS 相关的软件包有关(但很明显,它也可能发生在其他领域)。

是否可以为 GIS 创建一个 Python 虚拟环境,该环境最初可以使用外部库和软件构建,但随后是独立的,并且在更改或更新外部库和框架时不受影响?

4

1 回答 1

2

Python 虚拟环境很棒,但是当您尝试隔离基于 C 的依赖项时,您会发现它并没有真正的帮助。

Docker 是一种解决方案,但对于您的情况可能有点矫枉过正。Conda是一个环境管理器,它通过处理你的 Python 包及其所有依赖项来解决这个问题,无论它们是用什么语言编写的。Cartopy 和许多其他常见的 GIS 包都可以通过conda- forge 存储库预先构建。

安装 Conda 后,您可以执行以下操作:

conda create -n my_cartopy_env -c conda-forge cartopy

并且 cartopy 和它的所有依赖项都应该在他们自己的环境中为你安装,它可以在 Windows、OS X 或 Linux 上运行。魔法 :-)

于 2017-05-10T10:18:33.673 回答