我想在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的问题特别感兴趣。
答案 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:
site-packages/ee
ee:
dd
的包装器main.py
和__init__.py
写入site-packages/ee
两个设置之间的 唯一区别 是我们安装这些软件包的顺序。对我来说,第二秒钟安装ee
会覆盖__init__.py
文件,这阻止了ee
模块导入库内容。解决方法是完全清除目录和相关的dist-info
目录,然后重新开始:
rm -rf /usr/local/lib/python2.7/site-packages/ee
rm -rf /usr/local/lib/python2.7/site-packages/earthengine_api-0.1.182.dist-info
sudo pip install earthengine_api