bulkloader不导入ndb.model

时间:2012-12-08 12:49:13

标签: google-app-engine bulkloader

我还是Python和GAE的新手。我在本地服务器上有一个运行正常的应用程序。我可以将实体添加到我的数据存储区,我可以查看我的网站等:一切都很好。

现在我正在尝试使用bulkloader将实体添加到我的数据存储区。我按照https://developers.google.com/appengine/docs/python/tools/uploadingdata上的教程进行了操作。我的装载机如下:

from google.appengine.ext import ndb
from google.appengine.tools import bulkloader
import my_model

class ArticleLoader(bulkloader.Loader):
  def __init__(self):
    bulkloader.Loader.__init__(self, 'Article',
                               [('title', str),
                                ('author', str)
                                ])

loaders = [ArticleLoader]

我收到错误:

No module named my_model

有人对此有解决方法吗?

注意:我只使用一个目录。所以我的加载器与导入my_model模块的其他文件位于同一位置。

2 个答案:

答案 0 :(得分:1)

如果PYTHONPATH未正确设置,也会发生这种情况。如果您使用的是Linux,请在运行Bulkloader之前尝试运行:

export PYTHONPATH=$PYTHONPATH:.

这会将您当前的目录附加到PYTHONPATH,并且应该使您的my_model模块可见。由于我的记忆很糟糕而且我总是忘记这样做,所以我最终使用了一个简单的shell脚本,在开头包含了这个脚本,然后是bulkload命令本身。

如果您使用的是Windows,则应该可以使用sys.path.append修改路径。没有对此进行测试,但您可以尝试将其添加到您的脚本中(请注意,这也适用于Linux):

import sys
# ...
sys.path.append('.')

答案 1 :(得分:0)

您的代码应位于名为my_model.py的文件中。您收到该错误,因为没有名为my_module的模块。可能值得阅读Python modulepackage文档。