【问题标题】:Installing Numpy (v1.9.0), Pandas and SKlearn on GAE Standard Env (Python 27)在 GAE 标准环境 (Python 27) 上安装 Numpy (v1.9.0)、Pandas 和 SKlearn
【发布时间】:2018-05-29 13:22:11
【问题描述】:

我已经在本地服务器上使用 Webapp2 成功运行了我的应用程序。现在我希望将它部署在 Google App Engine 上。由于库不兼容,我目前正在调试一些错误。

为了配置应用程序,我按照Google guide 添加了 3rd 方插件,例如添加了lib 文件夹和:

# appengine_config.py
from google.appengine.ext import vendor

# Add any libraries install in the "lib" folder.
vendor.add('lib')

lib 文件夹中,我使用pip install -t lib -r requirements.txt 安装了我的要求,即

google-cloud-bigquery
oauth2client==4.1.2
google-api-python-client==1.6.4
pandas-gbq
pandas
scipy
scikit-learn==0.18.2
numpy==1.9.0

当我部署我的应用时,我看到:

Traceback(最近一次调用最后一次):文件 "/base/alloc/tmpfs/dynamic_runtimes/python27/54c5883f70296ec8_unzipped/python27_lib/versions/1/google/appengine/runtime/wsgi.py", 第 240 行,在句柄中 handler = _config_handle.add_wsgi_middleware(self._LoadHandler()) 文件 "/base/alloc/tmpfs/dynamic_runtimes/python27/54c5883f70296ec8_unzipped/python27_lib/versions/1/google/appengine/runtime/wsgi.py", 第 299 行,在 _LoadHandler 中 处理程序,路径,错误 = LoadObject(self._handler)文件“/base/alloc/tmpfs/dynamic_runtimes/python27/54c5883f70296ec8_unzipped/python27_lib/versions/1/google/appengine/runtime/wsgi.py”, 第 85 行,在 LoadObject 中 obj = import(path[0]) 文件 "/base/data/home/apps/s~corded-epigram-579/gr:20171215t102242.406232341485344902/main.py", 第 17 行,在 将 pandas 导入为 pd 文件“/base/data/home/apps/s~corded-epigram-579/gr:20171215t102242.406232341485344902/lib/pandas/init.py”, 第 19 行,在 “缺少必需的依赖项 {0}”.format(missing_dependencies)) ImportError:缺少必需的依赖项 ['numpy']

这基本上告诉我它找不到 numpy,但它在 lib 文件夹中。

我知道 google 支持 numpy v1.6.1,我可以使用 app.yaml 文件添加它,但我需要 至少 1.9.0 用于 pandas 包。

还添加了运行代码所需的 ma​​in.py 导入的屏幕截图。

【问题讨论】:

  • 刚开始为什么还要用旧软件?
  • @percusse 你说的老是什么意思?标准而不是 Flex?我正在关注使用 webapp2 构建简单应用程序的教程。我正在考虑试用 Django 并在 flex 上使用它。 flex 会不会像移除 lib 文件夹,将 app.yaml 更改为 flex 一样简单?
  • 新的 Numpy/pandas?如果我没记错的话,GAE 从 2016 年开始支持 Py3。
  • 谢谢,我应该关闭这个问题吗?

标签: python numpy google-app-engine


【解决方案1】:

App Engine 标准环境only supports pure Python librariesbuilt-in libraries provided by Google 除外。鉴于 Numpy 1.6.1 不适合您,您需要考虑使用灵活的环境或任何平台,例如 Compute Engine。

根据您的应用程序及其要求,您可能能够将您的应用程序架构成多个 App Engine“services”。例如,假设您需要使用这些库进行一些离线或异步分析,您可以在针对灵活环境的服务中运行该代码,并让应用程序的其余部分在标准环境中的服务中运行。通过将应用程序划分为服务,可以在环境甚至语言之间拆分同一个项目。

【讨论】:

    【解决方案2】:

    在你的lib目录中添加init.py文件,然后

    appengine_config.py:

    from google.appengine.ext import vendor
    import os
    vendor.add(os.path.join(os.path.dirname(os.path.realpath(__file__)), 'lib'))#  vendor.add('lib')
    

    然后将您的导入修改为

    from lib.something import something
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-03
      • 2014-01-05
      相关资源
      最近更新 更多