在 Ubuntu 上安装地球引擎

Installing earth engine on Ubuntu

我想在 Ubuntu 18.04 的 Python 上安装 Earth Engine API。我的系统上同时安装了 Python 2.7 和 Python 3.6,并且我按照说明使用 pip 和 pip3 安装了 Earth Engine(安装 google-api-python-client、oauth2client 和 earthengine-api) 没有任何问题。但是我在 2.7 和 3.6 上都遇到了错误:

在 Python 2.7 上,"import ee" 有效,但 "ee.Initialize()" return 是这样的:

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

在 Python 3.6 上,"import ee" 不起作用并且 return 此错误:

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.

的问题特别感兴趣

您的系统似乎有一个名为 ee 的 Python 包,它 不是 Earth Engine API。我这样说是因为 Python 3 traceback 指定了一个名为 ee/main.py 的文件,该文件不存在且从未存在过。这也可以解释为什么在另一种情况下找不到 ee.Initialize()

我建议进入 /home/sshahhey/.local/lib/python3.6/site-packages/ee/ 并浏览那里的代码,看看它可能是什么其他包。如果它不是你需要的东西,那么你可以删除那个 ee/。如果您出于其他目的需要它,您可以使用 virtualenv 来管理冲突库的安装。

跟进凯文的回答:

我遇到了同样的问题,但是我的 /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 覆盖了 __init__.py 文件,这阻止了 ee 模块导入库内容。解决方法是完全清除目录和相关的 dist-info 目录,然后重新开始:

  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