【问题标题】:Google App Engine - Importing my own source modules (multiple files)Google App Engine - 导入我自己的源模块(多个文件)
【发布时间】:2009-01-13 02:33:57
【问题描述】:

我正在编写一个 GAE 应用程序,但遇到以下问题时遇到了一些困难。

我创建了多个 python 文件(比如 a.py 和 b.py),它们都存储在同一个文件夹中。我可以通过将 URL 映射到它们(使用 app.yaml)来调用 a.py 或 b.py 中的代码。我还没有弄清楚如何将代码从一个导入另一个。

谁能帮我解决这里需要的语法和/或任何配置?例如,我的印象是我可以通过在 a.py 中发出以下语句来将 b.py 中的代码包含在文件 a.py 中

import b

我对这种方法没有任何成功。具体来说,我收到此错误:

ImportError: No module named b

有什么建议吗?

谢谢,

马特

【问题讨论】:

    标签: python google-app-engine


    【解决方案1】:

    您是否尝试过像从顶层开始一样导入?喜欢

    导入模块.b

    【讨论】:

      【解决方案2】:

      如果没有找到 a.py 和 b.py 文件,请确保在 sys.path 中包含各自的路径。

      import sys
      sys.path.append(r"/parent/of/module/b")
      

      【讨论】:

        【解决方案3】:

        请注意,GAE 的常见模式不是将每个单独映射到 app.yaml 中,而是使用一个“处理程序”脚本,将所有(或除静态和特殊之外的所有)URL 映射到它,并且让该脚本同时导入 a 和 b 并使用它们定义的处理程序。

        【讨论】:

        • 这种模式是最佳实践吗?似乎这会使每个请求都占用相同数量的资源。
        • 是的,这是一个最佳实践:应用程序中的所有模块都加载到单个 Python 环境中,每个请求都可以重用该环境,因此无论如何请求之间的内容都会保留在内存中。唯一的额外开销是在第一次请求时加载所有模块。
        【解决方案4】:

        正如@toby所说,必须像从顶级目录导入一样导入,并且必须在文件夹中放置一个名为init.py的文件。

        【讨论】:

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