Использование ГИС в виртуальных средах Python
Этот вопрос был отложен на GIS Stack Exchange за то, что он не по теме. Поэтому я решил попробовать Stackru.
Я некоторое время использовал Python и увлекся идеей, что виртуальные среды - это хорошая вещь, потому что они предотвращают будущие обновления пакетов, нарушающие ваш драгоценный код, на разработку которого ушли эоны. Я только что провел несколько хороших дней, пытаясь заставить картопи работать в виртуальной среде Python 3.6 на Mac, используя библиотеки fink для gdal, geos и proj4 (см. Сбои Python 3.4 при создании некоторых - но не всех - карт Cartopy с сегментацией ошибка 11). Однако, похоже, что даже в виртуальной среде код все еще опирается на эти внешние библиотеки. Казалось бы, это побеждает объект использования виртуальных сред, потому что, если внешние библиотеки обновляются, он рискует сломать любой ГИС-код, разработанный в виртуальной среде, даже если пакеты Python в виртуальной среде остаются неизменными. Единственный раз, когда я сталкивался с этой ситуацией, связан с пакетами, связанными с ГИС (но, очевидно, это может происходить и в других сферах).
Можно ли создать виртуальную среду Python для ГИС, которая может быть изначально построена с использованием внешних библиотек и программного обеспечения, но затем является автономной и не затрагивается при изменении или обновлении внешних библиотек и сред?
1 ответ
Виртуальные среды Python хороши, но, как вы обнаруживаете, они не очень помогают, когда вы пытаетесь изолировать зависимости на основе Си.
Докер является одним из решений, но может быть излишним для вашей ситуации. Conda - это менеджер среды, который решает эту проблему, заботясь о ваших пакетах Python и всех их зависимостях, независимо от того, на каком языке они были написаны. Cartopy и многие другие распространенные ГИС-пакеты доступны предварительно скомпонованными через репозиторий conda-forge.
После установки Conda вы можете просто:
conda create -n my_cartopy_env -c conda-forge cartopy
И cartopy и все его зависимости должны быть установлены для вас в их собственной среде, и это работает на Windows, OS X или Linux. Магия:-)