【问题标题】:Importing my own modules in Google App Engine在 Google App Engine 中导入我自己的模块
【发布时间】:2010-08-06 11:12:32
【问题描述】:

我是 Google App Engine 的新手,并且一直在使用它,但是对于我的一生,我不明白如何导入非标准模块,因此也不完全了解app.yaml 文件的用途。

基本上我想从我的脚本文件中导入 SimPy(大约 15 个 python 文件的集合),但是我所做的每件事的组合都会导致 ImportError,即:

from SimPy.Simulation import *
ImportError: No module named SimPy.Simulation

目前它们都在同一个文件夹中,我的 app.yaml 文件内容为:

application: physicalsim
version: 1
runtime: python
api_version: 1

handlers:
- url: /
  script: physicalsim.py
- url: /
  script: Globals.py
- url: /
  script: Simulation.py
etc....

现在我很确定我的 yaml 文件的语法有误,但是在任何地方都找不到任何有用的文档(有点令人沮丧),我真的不明白在我见过的一些 app.yaml 文件中定义的文件夹记住没有物理结构,它们只是虚拟文件夹吗?

如果你能提供帮助,我肯定我是个笨蛋:)

【问题讨论】:

    标签: python google-app-engine import simpy


    【解决方案1】:

    来自appconfig(跳过文件)文档:

    应用程序目录中路径与 static_dir 路径或 static_files 上传路径匹配的文件被视为静态文件。 应用程序目录中的所有其他文件都被视为应用程序和数据文件

    skip_files 元素指定应用程序目录中的哪些文件不会上传到 App Engine。该值可以是正则表达式,也可以是正则表达式列表。上传应用程序时,任何与正则表达式匹配的文件名都会从要上传的文件列表中省略。

    (不要将SimPy 放在跳过列表中)。

    app.yaml 中不需要指定包含的程序文件。 确保您的应用程序目录包含一个名为 SimPy 的子目录 带有__init__.py 文件,当然还有Simulation.py

    【讨论】:

      【解决方案2】:

      app.yaml 文件is here in the Application Config page的文档。

      handlers 部分的工作原理是依次将请求的 url 与指定的每个模式进行比较,并在找到第一个匹配项时运行匹配的处理程序(或者如果指定了 static_dirstatic_files 而不是提供静态文件,则提供静态文件script.

      在您显示的 app.yaml 中,与 / 完全匹配的 url 将导致调用处理程序 physicalsim.py。所有其他处理程序将被忽略,因为它们是从相同的 url 提供的。如果这些是 physicalsim.py 的支持模块,则无需在 app.yaml 中包含有关它们的任何内容。

      网址不必与您的 web 应用程序内部的结构有任何关系。 url 路径和包含您的处理程序和模块的目录之间不需要任何对应关系(尽管为了理智起见,您可能希望至少保持一些相关性)。

      您是否浏览过getting started 文档?

      app.yaml 所在的目录(即您将上传的应用程序的根目录)将位于 python 路径上,您应该能够引用与它相关的所有模块(和/或添加如果需要,您的处理程序中的其他人)。

      【讨论】:

        【解决方案3】:

        将一个空的 init.py 添加到您希望从中导入模块的任何子文件夹中。我不知道这一点...

        我在这篇 SO 帖子中找到了答案。

        Import module from subfolder

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-02-12
          • 1970-01-01
          • 2015-02-19
          • 2014-06-13
          • 1970-01-01
          • 1970-01-01
          • 2012-03-12
          相关资源
          最近更新 更多