我已经基于默认模板创建了一个简单的GAE应用。我想添加一个外部模块,例如short_url。我该怎么做呢?到目前为止,我发现的指示令人迷惑,我认为GAE似乎没有使用PYTHONPATH的明显原因。
只需将short_url.py文件放在应用程序的目录中即可。
short_url.py
示例App Engine项目:
myapp / app.yaml index.yaml main.py short_url.py views.py
在views.py(或任何地方),您可以像这样导入:
views.py
import short_url
对于更复杂的项目,也许更好的方法是创建一个目录,尤其是针对依赖项。说lib:
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文件中的所有其他导入之前列出。如果我的解释不清楚, 这是完整示例的链接。
main.py