【问题标题】:Can you install pandas in Google App Engine standard environment?可以在 Google App Engine 标准环境中安装 pandas 吗?
【发布时间】:2017-05-19 01:16:09
【问题描述】:

我正在尝试将项目上传到使用 pandas 的 Google App Engine 标准环境,但我按照此处的说明进行操作:

https://cloud.google.com/appengine/docs/standard/python/tools/using-libraries-python-27

我收到此错误: ImportError: Missing required dependencies ['numpy']

我不确定我是否走在正确的道路上。

【问题讨论】:

标签: python pandas google-app-engine google-cloud-platform


【解决方案1】:

看起来 Pandas 依赖于 numpy,其中包含一些已编译的 C 代码,因此必须通过 App Engine 捆绑的第三方库系统加载。

要修复此错误,请将 numpy 添加到 app.yaml 中的“库”块中:

libraries:
- name: numpy
  version: "1.6.1"

请参阅Built-in Third-party Libraries 了解您可以通过这种方式包含的所有库的完整列表,并参阅Using third-party libraries 了解有关“库”块如何工作的更多详细信息。

请注意,如果 Pandas 本身不是纯 Python,您仍然无法在标准环境中安装它。上面的配置会让 numpy 为你工作:)

【讨论】:

  • 这是我在安装该版本的 numpy 时得到的:`Command "python setup.py egg_info" failed with error code 1 in c:\users\havilez\appdata\local\temp\pip- build-n7bfdn\numpy`
【解决方案2】:

继续 Phillip Pearson,在本地开发时,您可能会遇到“没有名为 _ctype 的模块”或“没有名为 _winreg 的模块”错误。假设您使用的是 windows,您需要应用以下解决方法。

  • 转到 \google\appengine\tools\devappserver2\python\sandbox.py
  • 找到_WHITE_LIST_C_MODULES = [xxx]的定义 将以下两行添加到列表中:
    '_winreg', '_ctypes',
  • 再次尝试您的应用。

【讨论】:

    【解决方案3】:

    我确认可以在 appengine 标准中使用 numpy,但 pandas 仍然有很多引用本机库。

    所以在 appengine 标准中没有 pandas,直到它被添加到通过 app.yaml 导入部分可用的本机库列表中。

    【讨论】:

    • 请提供更多详细信息。
    • 可以在 beta python3 运行时使用 pandas 吗?
    【解决方案4】:

    (2021 年 11 月) 这里的大多数答案都已过时,因为 second-generation App Engine service launched in 2018 时已“修复”。您现在可以在平台上以更惯用的方式开发和部署 Python 应用程序。但是,您必须使用 Python 3,因为 Python 2 仍然在需要纯 Python 代码的遗留平台上(除了那些在其他地方提到的带有内置 3rd-party 库支持的平台)。这是我刚刚部署的一个简单的 Numpy 和 Pandas 应用程序(3 个文件):

    ############
    # app.yaml #
    ############
    
    runtime: python39
    
    ###########
    # main.py #
    ###########
    
    from flask import Flask
    import numpy as np
    import pandas as pd
    
    app = Flask(__name__)
    @app.route('/')
    def root():
        dates = pd.date_range("20211101", periods=7)
        df = pd.DataFrame(np.random.randn(7, 3),
                index=dates, columns=list("ABC"))
        return df.to_html()
    
    ####################
    # requirements.txt #
    ####################
    
    flask
    pandas
    

    补充说明:

    1. 您不需要在requirements.txt 中指定numpy,因为它是pandas 依赖项;拥有pandas 就足够了。
    2. app.yaml 中不再需要额外的libraries 部分的“有福的”第3 方库(W/或W/O C/C++ 代码)...只需将您想要的内容放入requirements.txt

    这是点击 App Engine 页面时的输出:

    【讨论】:

      猜你喜欢
      • 2015-01-26
      • 2018-10-07
      • 1970-01-01
      • 2018-03-12
      • 2018-07-01
      • 2019-10-27
      • 1970-01-01
      • 2019-05-30
      • 2019-03-29
      相关资源
      最近更新 更多