【问题标题】:GAE third party libraries (eg. MySQLdb) in standard environment标准环境下的 GAE 第三方库(如 MySQLdb)
【发布时间】:2018-09-13 00:04:29
【问题描述】:

我一直在努力使用MySQLdb。在我的项目(Python 2.7)中,我有:

import MySQLdb

回复:ImportError: No module named MySQLdb

app.yaml

libraries: 
- name: MySQLdb
  version: latest

我发现MySQLdb 是预定义标准模块的一部分。然而我仍然无法解决它。当

pip install -t /lib MySQLdb

回复是:

收集 MySQLdb

找不到满足 MySQLdb 要求的版本(来自版本:) 没有为 MySQLdb 找到匹配的分布

所以我关注了一些tuts 并这样做了:

sudo apt-get install python-mysqldb

安装时我得到了:

您正在 Cloud Shell 中运行 apt-get。请注意,您的云 Shell 机器是短暂的,不会持续存在系统范围的更改 会话结束后。

确实,这些更改仅在会话范围内持续存在。

有什么建议吗?我做某事吗?错了吗?

【问题讨论】:

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


    【解决方案1】:

    app.yaml 文件仅用于在 App Engine 上部署的应用程序。它仅为您部署的应用程序指定一些配置。所以通过定义:

    libraries:
    - name: MySQLdb
      version: "latest"
    

    它基本上指示 App Engine 平台使用实例上的内置库来运行您的代码。

    现在,正如here 解释的那样,在您的本地机器上进行开发,您需要自己安装库。你可以通过运行来做到这一点:

    pip install MySQL-python
    

    请注意,您不必将此库也安装在 lib 文件夹中。仅当库未在 Built-in Third-party Libraries 中列出时才需要这样做,以便在部署时将库与您的应用程序一起上传。如果它在列表中,那么在 app.yaml 文件中引用它就足够了。

    关于 Cloud Shell 的最后一件事。它是提供给您的一个小型 VM 实例,用于简化资源管理或测试。它不是为了开发。每次启动时都会安装默认映像(因此您安装的任何库或操作系统级别的工具都将丢失)。仅复制您的主文件夹。一些有用的工具默认安装在像 gcloud 这样的镜像上。

    【讨论】:

    • MySQLdb是built-in library,不会通过pip安装。
    • 我想与它在本地的工作方式进行比较,尽管它实际上并不使用 pip。我已经更新了我的答案。
    • @LundinCast,感谢您的澄清。我在本地开发并且它有效。然而,由于我需要在项目中同时使用 Cloud SQL 和 Cloud Storage,我需要使用(GCP 的)这些设置来调整项目。我使用了tut,但它失败了......
    猜你喜欢
    • 1970-01-01
    • 2017-06-27
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-23
    相关资源
    最近更新 更多