模块导入失败:如何在 Google Cloud SDK 上将 Google Cloud 客户端库获取到 运行
Module import failing: How to get Google Cloud Client libraries to run on 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:
的正确版本
import sys, os
print(os.path.dirname(sys.executable))
Returns: C:\Users\dominic\Anaconda3\envs\py27
所以我不明白为什么它找不到那个特定的库。我认为这可能与必须在 App Engine 中 install any non-third party libraries into lib
(in the standard environment), as only a certain set are pre-loaded 有关(因此可能是云 SDK?),但是当我尝试导入一些预加载的库时,如 flask
或 futures
(也安装在这个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 设计的应用程序,通过沙箱执行,而不支持通用的独立应用程序。目前尚不清楚您尝试的基本应用程序是一种类型还是另一种类型。参见 。
至于 flask
或其他 GAE 提供的库,您需要 request them in your app.yaml
file (personally I'd use an explicit version in there instead of latest
, I think I saw some issues reported possibly related to latest
). To be noted here that some of these libraries/versions aren't installed by default in the cloud SDK, the additional app-engine-python-extras
component may need to be installed, see 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
问题
我正在尝试开发一个基本的 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:
的正确版本import sys, os
print(os.path.dirname(sys.executable))
Returns: C:\Users\dominic\Anaconda3\envs\py27
所以我不明白为什么它找不到那个特定的库。我认为这可能与必须在 App Engine 中 install any non-third party libraries into lib
(in the standard environment), as only a certain set are pre-loaded 有关(因此可能是云 SDK?),但是当我尝试导入一些预加载的库时,如 flask
或 futures
(也安装在这个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 设计的应用程序,通过沙箱执行,而不支持通用的独立应用程序。目前尚不清楚您尝试的基本应用程序是一种类型还是另一种类型。参见
至于 flask
或其他 GAE 提供的库,您需要 request them in your app.yaml
file (personally I'd use an explicit version in there instead of latest
, I think I saw some issues reported possibly related to latest
). To be noted here that some of these libraries/versions aren't installed by default in the cloud SDK, the additional app-engine-python-extras
component may need to be installed, see 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