在Ubuntu上安装Earth Engine

时间:2019-06-05 14:09:03

标签: google-earth-engine

我想在Ubuntu 18.04上的Python上安装Earth Engine API。我的系统上同时安装了Python 2.7和Python 3.6,并且按照说明(安装google-api-python-client,oauth2client和earthengine-api)同时使用pip和pip3来安装Earth Engine。但是我在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上,“导入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 个答案:

答案 0 :(得分:1)

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

我建议您进入/home/sshahhey/.local/lib/python3.6/site-packages/ee/并在那里浏览代码以查看它可能还有其他软件包。如果这不是您需要的内容,则只需删除该ee/。如果您需要将其用于其他目的,则可以使用 virtualenv 管理冲突的库的安装。

答案 1 :(得分:1)

跟随凯文的答案:

我遇到了同样的问题,但是我的/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