gpt4 book ai didi

python - Google App Engine 开发服务器删除 virtualenv 的站点包

转载 作者:行者123 更新时间:2023-12-01 04:42:26 25 4
gpt4 key购买 nike

我在 ROOT-DIR 中有一个 Google App Engine 程序,在 ROOT-DIR/env 中有一个包含一些库(包括 sqlalchemy)的 virtualenv。我尝试通过这样做使用开发服务器运行我的程序(使用 msys 又名 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 开发服务器在运行时删除该路径,或者其他什么。

为什么开发服务器会删除 site-packages 目录?

这是 Windows 8 上的 Python 2.7。

最佳答案

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

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

virtualenv/local libs 的存在只是为了让您不必在项目文件夹或基础 python 发行版中安装这些库。如果您要在项目中安装它们,则需要在部署之前将其删除。请记住,所有自定义第 3 方库都需要与您的代码一起部署。 “本地库”仅适用于 Google 支持的库。

关于python - Google App Engine 开发服务器删除 virtualenv 的站点包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30296098/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com