使用Google App Engine管理第三方Python库的最佳策略是什么?
假设我要使用Flask(一个Web应用程序框架)。博客条目说要这样做,这似乎不正确:
$ cd /tmp/ $ wget http://pypi.python.org/packages/source/F/Flask/Flask-0.6.1.tar.gz $ tar zxf Flask-0.6.1.tar.gz $ cp -r Flask-0.6.1/flask ~/path/to/project/ (... repeat for other packages ...)
必须有更好的方法来管理第三方代码,尤其是在我要跟踪版本,测试升级或两个库共享一个子目录的情况下。我知道Python可以从zipfile导入模块,并且 pip 可以与出色的REQUIREMENTS文件一起工作,而且我已经看到 pip 具有zip用于GAE的命令。
zip
简单地说:
$ pip install -r requirements.txt -t <your_app_directory/lib>
创建/编辑<your_app_directory>/appengine_config.py:
<your_app_directory>/appengine_config.py
"""This file is loaded when starting a new application instance.""" import sys import os.path # add `lib` subdirectory to `sys.path`, so our `main` module can load # third-party libraries. sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'lib'))
Google将其示例更新为appengine_config.py,例如:
appengine_config.py
from google.appengine.ext import vendor vendor.add('lib')
注意:即使他们的示例.gitignore忽略了lib/目录,但是如果使用git- push部署方法,您仍然需要将该目录置于源代码控制之下。
.gitignore
lib/
git- push