0

我在使用 dev_appserver 1.7.6 在带有 buildout 的 virtualenv 中部署我一直在本地开发的应用程序时遇到了一些困难。当我部署时,我的本地 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 并仍然部署到 Google App Engine 而不必从我的 skip_files 部分评论/取消评论 dist/Crypto?

我现在只使用 python 几个月了,所以我认为由于缺乏环境经验,我遗漏了一些明显的东西。

4

1 回答 1

0

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

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

于 2013-04-09T20:42:19.047 回答