【问题标题】:bulkloader not importing ndb.modelbulkloader 不导入 ndb.model
【发布时间】:2012-12-08 12:49:12
【问题描述】:

我还是 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 模块的其他文件位于同一位置。

【问题讨论】:

  • 我没有bulkloader.yaml 文件。该教程提到不能为 localhost 自动生成一个。如果我需要一个,有人有文件应该是什么样子的例子吗?我正在传递一个 csv 文件。

标签: google-app-engine bulkloader


【解决方案1】:

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

export PYTHONPATH=$PYTHONPATH:.

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

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

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

【讨论】:

  • 酷!上票!现在我在同一行收到一个新错误:raise KindError('No implementation for kind \'%s\'' % kind) google.appengine.ext.db.KindError: No implementation for kind 'Article'
  • 所以现在它看到了模块,但看不到模块内的类——这实际上是模块内的唯一类。每个其他文件都可以很好地看到该类——除了这个加载器。
  • 我需要bulkloader.yaml 吗?由于我不能自动生成一个,你有我可以使用的例子吗?我正在传递一个csv 文件。
  • @kasavbere 啊,你用的是ndb,一开始没看到。您实际上可以在回溯中看到错误的原因 - db API 是被调用的 API,而不是 ndb。我记得有人发布了类似的问题 - 如果我能找到它,我会在此处粘贴链接(我认为它实际上是一个缺失的功能)。
  • @kasavbere 这是活动功能请求 (code.google.com/p/appengine-ndb-experiment/issues/detail?id=224)。这来自stackoverflow.com/questions/13571466/…,这是由比我更有信誉的人回答的:) 很抱歉答案不令人满意。
【解决方案2】:

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

【讨论】:

  • 我不喜欢拒绝那些好心尝试提供帮助的人。但是你下次真的应该更好地阅读这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多