在Google App Engine(PyDev)中管理命名空间开发库

时间:2013-08-31 15:59:46

标签: google-app-engine python-2.7 pydev libraries symlink

在开发GAE应用程序的同时,也开发了内部库。这些库使用命名空间包。

为了演示,我有两个具有以下文件结构的库。

第一LIB:

first
  |--src  # Sources of first
  |  `--spam  # Namespace 'spam'
  |     |--eggs  # Namespace 'spam.eggs'
  |     |  `--*
  |     `--sausage  # Namespace 'spam.sausage'
  |        `--*
  `--test  # Unit tests of first
     `--*

二-lib的:

second
  |--src  # Sources of second
  |  `--spam  # Namespace 'spam'
  |     |--bacon  # Namespace 'spam.bacon'
  |     |  `--*
  |     `--tomatoes  # Namespace 'spam.tomatoes'
  |        `--*
  `--test  # Unit tests of second
     `--*

目前,我们将应用程序根目录中的两个库进行符号链接,从而创建以下文件结构。

应用

app
  |--src  # Sources of app
  |  |--lib  # Plain directory
  |  |  |--first  # Symlink to first/src
  |  |  `--second  # Symlink to second/src
  |  |--fries  # App specific package
  |  |  `--*
  |  |--app.yaml
  |  `--appengine_config.py
  `--test  # Unit tests of app
     `--*

appengine_config模块中,sys.path被修改,因此它包含符号链接。一切都可以按预期导入。

这个问题是GAE dev_appserver没有解析符号链接。当在真实路径(而不是符号链接路径)中设置断点时,PyDev会发出警告:

  

pydev debugger:警告:尝试将断点添加到不存在的文件:< real-path> (没有效果)

诀窍是在符号链接文件中添加断点。这非常烦人。

有没有办法禁用GAE沙箱,因此可以导入模块而不进行符号链接或解决它?目标是在库位于工作区时使断点工作。

0 个答案:

没有答案