当前位置: 首页 > 面试题库 >

如何在Google App Engine中导入模块?

徐凌
2023-03-14
问题内容

我已经基于默认模板创建了一个简单的GAE应用。我想添加一个外部模块,例如short_url。我该怎么做呢?到目前为止,我发现的指示令人迷惑,我认为GAE似乎没有使用PYTHONPATH的明显原因。


问题答案:

只需将short_url.py文件放在应用程序的目录中即可。

示例App Engine项目:

myapp /
    app.yaml
    index.yaml
    main.py
    short_url.py
    views.py

views.py(或任何地方),您可以像这样导入:

import short_url

对于更复杂的项目,也许更好的方法是创建一个目录,尤其是针对依赖项。说lib

myapp /
    lib /
        __init__.py
        short_url.py
    app.yaml
    index.yaml
    main.py
    views.py



from lib import short_url

编辑#2:
道歉,我应该早些提到。感谢Nick Johnson的以下修复,您需要修改路径。
在启动您的应用程序之前,请确保此代码已运行;像这样的东西:

import os
import sys

def fix_path():
    # credit:  Nick Johnson of Google
    sys.path.append(os.path.join(os.path.dirname(__file__), 'lib'))

def main():
    url_map = [ ('/', views.IndexHandler),] # etc.
    app = webapp.WSGIApplication(url_map, debug=False)
    wsgiref.handlers.CGIHandler().run(app)

if __name__ == "__main__":
    fix_path()
    main()

Edit3:
要使此代码在所有其他导入之前运行,您可以将路径管理代码放入其自己的文件中,该文件位于应用程序的基本目录中(Python无需更改任何路径即可识别该目录中的所有内容)。
然后您只需确保此导入

import fix_path

…在main.py文件中的所有其他导入之前列出。如果我的解释不清楚,
这是完整示例的链接。



 类似资料:
  • 问题内容: 在PyCharm中,我添加了Python环境。然而, 失败作为未定义的引用。但是,它在命令行的Python解释器中运行良好。 GNURadio可以在Pycharm外部使用python正常工作。一切都已安装并配置为我想要的方式。 格努拉迪奥位于 也: PYTHONPATH = / usr / local / lib / python2.7 / site-packages:/usr/loc

  • 我在让sikuli python单元测试工作时遇到了麻烦,希望能得到一些帮助。我在网上到处搜索,但是没有任何有用的东西。我的python知识非常有限,我想这没有什么帮助... 我用的是win7 32,sikuli 1.0 rc3 (r905),python 2.7.3 我正在尝试通过python运行sikuli单元测试(不使用命令行,只是作为一个python脚本来运行python gui)。除了别

  • 问题内容: 我有一个ES6模块。将其作为参数执行即可: 是模块的输出。 与此相反,REPL中的以下输入等待进一步的输入: 我不明白为什么。 与以下相同: 尝试导致: 那么,如何在Node.js REPL中导入ES模块? 问题答案: 目前这是不可能的。ES模块应该从ES模块范围导入,而REPL不被认为是其中之一。随着时间的推移,这会有所改善,因为ES模块的支持是实验性的。在Node模块实现中和的使用

  • 注意:我知道有很多关于这个主题的帖子,我已经审阅了相当多的没有成功(请看我在这篇文章底部的参考资料)。 我正试图使用Visual Studio代码在TypeScript中运行一个非常简单的测试,其中我在一个文件中声明一个类并将其导入到另一个文件中。但是,我仍然遇到一个问题,我正在导入的文件无法识别我从另一个文件导出的类的方法。 此时我收到的确切错误消息是: [ts]属性“Get FirstName

  • 问题内容: 我已经通读了Apple的Swift文档,却对如何创建模块或如何将类或结构成员定义为私有或公共一无所知。 语法中有对import语句的引用,但找不到有关它做什么或如何使用的信息。 有谁知道我在哪里可以找到这个? 问题答案: 更新资料 您可以使用框架对快速项目进行模块化。 我们通过为每个模块创建单独的框架项目并通过Xcode工作区将它们链接来实现模块化。当我们将组件分为不同的项目时,它看起

  • 问题内容: 我正在尝试在Python 2.7.2中使用并遇到奇怪的错误。 考虑以下目录结构: 具有以下代码: (在真实代码中有一个名称。) 尝试到时,产生以下错误: 我想念什么? 谢谢! 问题答案: 对于相对进口,您必须: a)使用相对名称 b)明确提供锚点 当然,您也可以只执行绝对导入: