谷歌App引擎:包含外部包

2 投票
3 回答
522 浏览
提问于 2025-04-16 03:42

我明白如果你想在项目中使用外部包,你得把它们包含进来。那么,具体该怎么做呢?

大家是不是会用一个通用的脚本,从某个地方自动导入这些包?或者说,有没有什么配置文件,里面列出了所有的外部包?你们是不是总是把这些包打包成zip文件,然后用zipimporter来导入?

总之,我想找一个好的方法来导入外部包。我从查看源代码中学到了一些,但如果能有更多的信息和例子就太好了。

3 个回答

1

如果你的脚本目录里有模块或者叫“蛋”的东西(其实就是一些代码包),你可以像用模块一样导入它们。比如说,如果我想在Google应用引擎上使用PyRTF这个库,我会把我电脑上的PyRTF文件夹复制到我的项目根目录下。不过,这种方法只适用于纯Python模块。

另外,你还可以自己创建模块。如果文件夹的结构符合要求,Python会把这些文件夹当作模块来导入。

<foldername>
-"__init__.py"
-"someotherscript.py"

然后你可以这样导入它们: import 文件夹名

2

只需要把这个包的文件夹放到你GAE应用的根目录下就可以了,简单吧!

0

在我看来,Jaikuengine采用了一个很好的解决方案。

它使用了一个叫“vendor”的文件夹,里面放着所有的依赖包。应用启动时,会把这个文件夹里的所有包打包成一个压缩文件,并更新系统路径。

想了解更多信息,可以查看jaikuengine项目

svn/trunk/manage.py
svn/trunk/build.py
svn/trunk/vendor/

还有一个重要的点是,在app.yaml文件中,vendor文件夹会被跳过,只有libs.zip会被上传到appengine。

撰写回答