Bri*_*tle 22 python google-app-engine
我已经基于默认模板创建了一个简单的GAE应用程序.我想添加一个像short_url这样的外部模块.我该怎么做呢?到目前为止我发现的方向令人困惑,GAE似乎没有使用PYTHONPATH,原因很明显我猜.
ber*_*nie 30
只需将short_url.py文件放在应用程序的目录中即可.
示例App Engine项目:
myapp/
app.yaml
index.yaml
main.py
short_url.py
views.py
在views.py(或任何地方),您可以像这样导入:
import short_url
Run Code Online (Sandbox Code Playgroud)
对于更复杂的项目,也许更好的方法是创建一个特别是依赖项的目录; 说lib:
myapp/
lib/
__init__.py
short_url.py
app.yaml
index.yaml
main.py
views.py
from lib import short_url
Run Code Online (Sandbox Code Playgroud)
编辑#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()
Run Code Online (Sandbox Code Playgroud)
编辑3:
要在所有其他导入之前运行此代码,您可以将路径管理代码放在应用程序基本目录中的自己的文件中(Python可以识别该目录中的所有内容而无需任何路径修改).
然后你只需确保这个导入
import fix_path
Run Code Online (Sandbox Code Playgroud)
...列在main.py文件中的所有其他导入之前.如果我的解释不清楚,
这里有一个完整的工作示例的链接.
我将回答@Adam Bernier和@ S.Mark给出的答案,尽管亚当解释的事情更详细一些.通常,您可以将任何纯Python模块/包添加到您的App Engine目录并按原样使用,只要它们不尝试在沙箱之外工作,即无法创建文件,无法打开网络套接字等.
还要牢记硬限制:
更新(2011年10月):这些数字中的大多数已增加到:
更新(2012年6月):最后一个限制被提升到:
| 归档时间: |
|
| 查看次数: |
15151 次 |
| 最近记录: |