Несовместимости модуля Python - PullRequest
2 голосов
/ 11 апреля 2019

Я только что установил gdal в мою корневую среду Python3, используя conda:

conda install -c conda-forge gdal

Установка прошла нормально с обычными обновлениями некоторых зависимостей. Теперь, возвращаясь к некоторым из моих скриптов, перестали работать и netCDF4, и mpl_toolkits.basemap. Вот ошибки, которые я получаю:

from netCDF4 import Dataset

---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-7-09694a7f0e01> in <module>()
----> 1 from netCDF4 import Dataset
      2 import numpy as np
      3 import matplotlib.pyplot as plt
      4 from scipy.interpolate import griddata
      5 from mpl_toolkits.basemap import Basemap

/anaconda3/lib/python3.6/site-packages/netCDF4/__init__.py in <module>()
      1 # init for netCDF4. package
      2 # Docstring comes from extension module _netCDF4.
----> 3 from ._netCDF4 import *
      4 # Need explicit imports for names beginning with underscores
      5 from ._netCDF4 import __doc__, __pdoc__

ImportError: dlopen(/anaconda3/lib/python3.6/site-packages/netCDF4/_netCDF4.cpython-36m-darwin.so, 2): Library not loaded: @rpath/libhdf5.101.dylib
  Referenced from: /anaconda3/lib/python3.6/site-packages/netCDF4/_netCDF4.cpython-36m-darwin.so
  Reason: image not found
from mpl_toolkits.basemap import Basemap

---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-8-5fb601138328> in <module>()
      3 import matplotlib.pyplot as plt
      4 from scipy.interpolate import griddata
----> 5 from mpl_toolkits.basemap import Basemap
      6 import numpy.ma as ma
      7 import glob

/anaconda3/lib/python3.6/site-packages/mpl_toolkits/basemap/__init__.py in <module>()
     35 import numpy as np
     36 import numpy.ma as ma
---> 37 import _geoslib
     38 import functools
     39 

ImportError: dlopen(/anaconda3/lib/python3.6/site-packages/_geoslib.so, 2): Library not loaded: @rpath/libgeos-3.5.0.dylib
  Referenced from: /anaconda3/lib/python3.6/site-packages/_geoslib.so
  Reason: image not found

Я понятия не имею, что означают эти ошибки, поскольку эти пути существуют. Что больше всего сбивает с толку, так это то, что модули netCDF4 и mpl_toolkits не изменились (то есть не были обновлены / понижены) при установке gdal, так почему же теперь они дают сбой?

Я нахожусь в конце своей привязи с такими проблемами. К счастью, я сделал копию своего корневого каталога Python, прежде чем пытаться выполнить эту установку, чтобы теперь я мог вернуться к нему (я уже бывал здесь много раз).

Я знаю о работе в отдельных средах conda, но серьезно ли я должен устанавливать новую среду каждый раз, когда хочу использовать новый модуль Python? Это не только занимает много места на жестком диске, но наиболее неудобно означает, что добавить новые функциональные возможности к старым кодам невозможно (я хочу использовать GDAL для построения некоторых геотифов с помощью Basemap, что теперь не работает!).

Я не могу представить опытных пользователей Python, борющихся с этими проблемами - так что я делаю не так?

...