python - 模块导入失败 : How to get Google Cloud Client libraries to run on Google Cloud SDK

标签 python windows google-app-engine anaconda google-cloud-sdk

问题

我正在尝试开发一个基本的 Google App Engine 应用程序。我从事大量数据科学工作,因此我使用 Anaconda 来管理我的 Python 发行版。

最近我一直在尝试设置 Google Cloud SDK + Google Cloud Client Libraries 以在 GAE 上(在标准环境中)进行开发,但无法让两者一起运行。

我已经激活了 Python 2.7 env (py27),当我尝试运行一个基本应用程序时,我收到以下错误:

  File "C:\Users\dominic\Anaconda3\envs\py27\lib\site-packages\google\cloud\bigquery\__init__.py", line 31, in <module>
    from pkg_resources import get_distribution
ImportError: No module named pkg_resources

但是该模块存在于 py27 中。

从 SDK 提供的交互式控制台,我可以看到它正在执行正确版本的 python:

enter image description here

import sys, os
print(os.path.dirname(sys.executable))

返回:C:\Users\dominic\Anaconda3\envs\py27

所以我不明白为什么它找不到那个特定的库。我认为这可能与必须 install any non-third party libraries into lib 有关(在标准环境中),只有 a certain set are pre-loaded在 App Engine 中(因此可能是云 SDK?),但是当我尝试导入一些预加载的库时,如 flaskfutures (它们也安装在这个 python 环境,这些也失败了)。

如何让 Google Cloud 客户端库在 Cloud SDK 中运行?

我尝试过的其他事情

我已经尝试将特定版本的 python 添加到我的 PYTHONPATH,以防它与 Anaconda 管理我的路径有关,但是那完全是 Python:

Error processing line 1 of C:\Users\dominic\Anaconda3\lib\site-packages\matplotlib-2.0.2-py3.6-nspkg.pth:

Failed to import the site module
Traceback (most recent call last):
  File "C:\Users\dominic\Anaconda3\lib\site.py", line 168, in addpackage
    exec(line)
  File "<string>", line 1, in <module>
  File "C:\Users\dominic\Anaconda3\lib\types.py", line 171, in <module>
    import functools as _functools
  File "C:\Users\dominic\Anaconda3\lib\functools.py", line 21, in <module>
    from collections import namedtuple
  File "C:\Users\dominic\Anaconda3\lib\collections\__init__.py", line 32, in <module>
    from reprlib import recursive_repr as _recursive_repr
  File "C:\Users\dominic\Anaconda3\envs\py27\Lib\site-packages\reprlib\__init__.py", line 7, in <module>
    raise ImportError('This package should not be accessible on Python 3. '
ImportError: This package should not be accessible on Python 3. Either you are trying to run from the python-future src folder or your installation of python-future is corrupted.

我需要将 Anaconda 作为我的主要 python 安装(出于工作目的),但我也希望能够使用 Cloud SDK 进行开发。

环境

  • Windows 7
  • 用于 python 安装的 Anaconda。
  • Python 3.6 是初级版本
  • 我有一个正在开发的 conda py27 环境。
  • 安装并验证了 Google Cloud SDK
  • google-cloud-bigquery 安装到 py27

最佳答案

google-cloud-bigquery 库不是 GAE 为标准环境提供的库,因此您需要 vendor it到您的应用程序中(GAE 不关心它是否安装到您的本地 python 安装中)。您的回溯表明它来自本地安装,请注意其中的 py27\lib\site-packages\google\cloud\bigquery 字符串。

这里还需要注意的是,标准环境仅支持为 GAE 设计的应用程序,通过沙箱执行,而不支持通用的独立应用程序。目前尚不清楚您尝试的基本应用程序是一种类型还是另一种类型。参见 import cloudstorage, ImportError: No module named google.appengine.api .

至于flask 或其他GAE 提供的库,您需要request them在你的 app.yaml 文件中(我个人会在那里使用显式版本而不是 latest,我认为我看到了一些可能报告的问题与 latest 相关)。此处要注意,某些 这些库/版本中的一些默认情况下并未安装在云 SDK 中,可能需要额外的 app-engine-python-extras 组件已安装,参见 PyCharm - Can't create App Engine Application using DJango .

至于你最后的尝试:

  • 以防万一不清楚,请注意标准环境仅支持 python 2.7,python 3 不支持。 This package should not be accessible on Python 3 字符串可能表明尝试可能是使用 python 3 完成的。您需要明确使用 python 2.7 可执行文件,因为您的主要版本是 python 3。<
  • matplotlib 是少数几个 GAE 提供的库之一,需要特别注意使用 SDK 进行本地开发,请参阅 Using built-in bundled libraries with the local development server

关于python - 模块导入失败 : How to get Google Cloud Client libraries to run on Google Cloud SDK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48654386/

相关文章:

python - 快速删除包含其他列表元组的元组

windows - 如何在 Windows 上自动捕获并重新启动崩溃的进程?

java - Activator Play Framework with google app engine

google-app-engine - Dart未将AppEngine添加到项目包文件夹

python - 如何使用美汤获取谷歌财经某只股票的当前价格?

python - HortonWorks Ambari 1.7.0 选择了错误的 HDP 堆栈

python - 优化策略使用(数据生成)

windows - vbscript 按字母顺序插入一行

c++ - Boost消息队列未跨两个进程接收

node.js - Google Cloud Endpoints 安全