Google App Engine开发服务器会删除virtualenv的网站包

时间:2015-05-18 06:05:10

标签: python google-app-engine

我在ROOT-DIR中有一个Google App Engine程序,在ROOT-DIR/env中有一些带有一些库的virtualenv,包括sqlalchemy。 我尝试使用开发服务器运行我的程序(使用msys a.k.a. git-bash)

$ cd ROOT-DIR 
$ source ./env/Scripts/activate
$ python path-to-gae/dev_appserver.py .

服务器启动,但当我浏览到localhost:8080时,服务器会在sqlalchemy上引发导入错误。 在主文件的顶部添加一些打印语句,我发现在我尝试导入sqlalchemy时的系统路径如下:

ROOT-DIR
d:\Google\google_appengine
d:\Google\google_appengine
ROOT-DIR\env\lib
C:\python27\Lib
C:\python27\DLLs
ROOT-DIR\env
d:\Google\google_appengine\lib\webapp2-2.5.2
d:\Google\google_appengine\lib\jinja2-2.6
d:\Google\google_appengine\lib\MySQLdb-1.2.4
d:\Google\google_appengine\lib\markupsafe-0.15
d:\Google\google_appengine\lib\setuptools-0.6c11
d:\Google\google_appengine\lib\protorpc-1.0
d:\Google\google_appengine\lib\webob-1.1.1
d:\Google\google_appengine\lib\yaml-3.10

显然,ROOT-DIR/env/lib/site-packages不存在,这解释了导入错误。

如果我启动virtualenv的python shell并执行此操作

import sys
for x in sys.path:
    print x

我看到ROOT-DIR\env\lib\site-packages,所以似乎GAE开发服务器在运行时删除该路径,或者什么。

为什么dev服务器会丢弃site-packages目录?

这适用于Windows 8上的Python 2.7。

1 个答案:

答案 0 :(得分:2)

您只能使用virtualenv来处理与支持的第三方库相匹配的本地库。对于所有其他人,您必须将它们安装到项目目录中,以便部署它们。

阅读https://cloud.google.com/appengine/docs/python/tools/libraries27密切关注“使用virtualenv管理本地库”,然后“将第三方软件包添加到应用程序”,尤其是第二个主题。有区别。

virtualenv / local libs只存在,因此您不必在项目文件夹或基础python发行版中安装这些库。如果要在项目中安装这些,则需要在部署之前将其删除。请记住,需要使用您的代码部署所有自定义第三方库。 “本地库”仅适用于谷歌支持的库。