Установка земляного двигателя на Ubuntu - PullRequest
1 голос
/ 05 июня 2019

Я хочу установить Earth Engine API на Python в Ubuntu 18.04.В моей системе установлены как Python 2.7, так и Python 3.6, и я устанавливаю Earth Engine, используя инструкции pip и pip3 (установка google-api-python-client, oauth2client и earthengine-api) без каких-либо проблем.Но я получаю ошибки на 2.7 и 3.6:

В Python 2.7 «import ee» работает, но «ee.Initialize ()» возвращает это:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'Initialize'

На Python 3.6 »import ee "не работает и возвращает эту ошибку:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/sshahhey/.local/lib/python3.6/site-packages/ee/__init__.py", line 1, in <module>
    from .main import main
  File "/home/sshahhey/.local/lib/python3.6/site-packages/ee/main.py", line 10, in <module>
    import StringIO
ModuleNotFoundError: No module named 'StringIO'

Любая помощь?Я особенно заинтересован в решении проблемы для Python 3.

Ответы [ 2 ]

1 голос
/ 10 июля 2019

В ответ на ответ Кевина:

У меня была такая же проблема, но состояние моего /usr/local/lib/python2.7/site-packages/ee выглядело так же, как и у моего коллеги, у которого Earth Engine API работал нормально. Проблема в том, что существует 2 pip пакетов, которые пишут в один и тот же каталог:

  • earthengine-api:
    • это пакет, который вы хотите
    • записывает библиотеку Earth Engine в site-packages/ee
  • ee:
    • Не имеет отношения к EE, просто оболочка для dd
    • записывает main.py и __init__.py в site-packages/ee

Единственной разницей между нашими двумя установками был порядок, в котором мы устанавливали эти пакеты. Для меня установка ee second переписала файл __init__.py, что помешало модулю ee импортировать содержимое библиотеки. Исправление состояло в том, чтобы полностью очистить каталог и связанный dist-info dir и начать заново:

  1. rm -rf /usr/local/lib/python2.7/site-packages/ee
  2. rm -rf /usr/local/lib/python2.7/site-packages/earthengine_api-0.1.182.dist-info
  3. sudo pip install earthengine_api
1 голос
/ 06 июня 2019

Похоже, в вашей системе есть пакет Python с именем ee, который не является API Earth Engine . Я говорю это потому, что в трассировке Python 3 указан файл с именем ee/main.py, который не существует и никогда не существует. Это также объясняет, почему ee.Initialize() не было найдено в другом случае.

Я бы порекомендовал зайти в /home/sshahhey/.local/lib/python3.6/site-packages/ee/ и просмотреть там код, чтобы посмотреть, какой еще пакет может быть. Если это не то, что вам нужно, тогда вы можете просто удалить это ee/. Если это то, что вам нужно для другой цели, вы можете использовать virtualenv для управления установками конфликтующих библиотек.

...