当部署到Google app Engine时,忽略buildout $app/dist/文件夹中的pycrypto



我遇到了一些困难部署一个应用程序,我一直在本地开发使用dev_appserver 1.7.6在一个虚拟环境与构建。当我部署时,我的本地dist文件夹也被部署,这会导致与应用引擎提供的库冲突

我的应用程序依赖于pycrypto,所以为了在本地运行它,我已经将pycrypto添加到我的buildout.cfg中。这将在$app/dist/Crypto中安装pycrypto。一切在本地运行良好,但是当我部署$app/dist文件夹时也被部署了。App Engine在尝试导入DES3

时报错ImportError。
File "/path/to/my/app/dist/Crypto/Cipher/DES3.py", line 67, in <module>
    from Crypto.Cipher import _DES3
ImportError: dynamic module does not define init function (init_DES3)

你可以从错误日志中看到它试图使用$app/dist中的pycrypto而不是google提供的版本。

我怎样才能在virtualenv中使用pycrypto,并且仍然部署到谷歌应用引擎,而不必从我的skip_files部分注释/取消注释dist/Crypto ?

我只使用了几个月的python,所以我想由于我对环境缺乏经验,我错过了一些明显的东西。

由于我对buildout/virtualenv的误解,我的本地设置非常糟糕。

解决方案是在我的build .cfg中创建两个单独的partsrecipe = appfy.recipe.gae:app_lib。一部分用于应用引擎在部署时包含但不在本地应用服务器中的项。这使用主应用程序路径之外的lib-directory。第二部分也是recipe = appfy.recipe.gae:app_lib,但它使用的是lib-directory,位于部署到app引擎的代码文件夹内。

相关内容

  • 没有找到相关文章

最新更新