2009-07-07 22 views
3

我gdata的库安装在我的ArchLinux,和一个简单的应用程序,在开始进口原子库,当我运行新闻出版总署引擎和访问Web应用程序,AppEngine上的服务器无法导入原子模块

$ python2。 5 ./dev_appserver.py〜/ myapp

它抛出异常'No module named atom'。但是当我在Python2.5交互模式下运行'import atom'时,它运行良好。我如何在我的GAppEngine应用程序中导入原子模块?

回答

11

将atom.py添加到您保留GAE Python源代码的相同目录中,并确保在您上传应用时将其上传到服务器。 (上传发生在您执行appcfg.py update myapp/时,除非您自行停止;使用命令中的--verbose标志可准确查看要上传或更新的内容)。 (或者,如果它是一个大文件,使用它创建一个zip文件,并在你的处理程序中追加该zip文件到sys.path;例如参见zipimport)。

这假定你有一个文件atom.py这是你正在导入;如果该文件轮流导入其他文件,则必须以类似的方式使其他文件可用,等等(请参见Python标准库中的modulefinder,了解如何查找所需的所有模块)。

如果​​不是一个模块而是一个包,那么在import上得到的是文件夹中的__init__.py文件;所以同样的建议也适用(并且zipimport变得更具吸引力,因为您可以轻松地打包任何目录结构,例如使用来自Linux命令行的zip -r命令)。

如果在任何时候(如模块搜寻器将帮助您发现),则依赖于第三方C代码扩展(Python可以使用但不用纯Python编写的.so.pyd文件) GAE提供的简短列表(请参阅here),那么Python代码在GAE上不可用,因为GAE仅支持纯Python。如果是这种情况,那么您必须寻找GAE支持的的替代方案,即纯Python方法来获得您需要的相同功能。

+1

这引起了一个有趣的困惑。我很有信心,如果我在Google网站上阅读同样的内容,这个答案是正确的。如果我完成了后者,并且有人回答“官方”答案的意思,我会赞成。但是,基于“我相信马尔泰利先生知道他在说什么”这一点看起来有点奇怪。 +1无论如何,让球滚动;-) – 2009-07-07 15:17:24