Google app engine bulkloader未导入ndb.model

Google app engine bulkloader未导入ndb.model,google-app-engine,bulkloader,Google App Engine,Bulkloader,我对Python和GAE还是新手。我在本地服务器上有一个运行正常的应用程序。我可以添加实体到我的数据存储,我可以查看我的网站,等等:一切都很好 现在我正尝试使用bulkloader将实体添加到我的数据存储中。我在第二节学习了教程。我的加载程序如下: from google.appengine.ext import ndb from google.appengine.tools import bulkloader import my_model class ArticleLoader(bulkl

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

现在我正尝试使用bulkloader将实体添加到我的数据存储中。我在第二节学习了教程。我的加载程序如下:

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\u model
模块的另一个文件位于同一位置。

您的代码应该位于名为
my\u model.py
的文件中。您收到该错误是因为没有名为
my\u module
的模块。可能值得一读Python和文档。

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

如果您的
PYTHONPATH
设置不正确,也可能发生这种情况。如果您在Linux上,请在运行Bulkloader之前尝试运行以下命令:

export PYTHONPATH=$PYTHONPATH:.
这会将当前目录附加到您的
PYTHONPATH
,并应使您的
my_model
模块可见。由于我的内存很差,而且我总是忘记做这件事,所以我最终使用了一个简单的shell脚本,它在开始时包含了这个脚本,然后是bulkload命令本身

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

导入系统 # ... sys.path.append(“.”)
如果您的
PYTHONPATH
设置不正确,也会发生这种情况。如果您在Linux上,请在运行Bulkloader之前尝试运行以下命令:

export PYTHONPATH=$PYTHONPATH:.
这会将当前目录附加到您的
PYTHONPATH
,并应使您的
my_model
模块可见。由于我的内存很差,而且我总是忘记做这件事,所以我最终使用了一个简单的shell脚本,它在开始时包含了这个脚本,然后是bulkload命令本身

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

导入系统 # ... sys.path.append(“.”)
酷!投票!现在我得到了一个新的错误:
raise kinderor('kind\'%s\'%kind没有实现)google.appengine.ext.db.kinderor:kind'Article'没有实现
,所以现在它看到的是模块,而不是模块内的类——这实际上是模块内唯一的类。除此之外,其他所有文件都可以看到这个类。我需要
bulkloader.yaml
?因为我不能自动生成一个,你有我可以使用的例子吗?我正在传递一个
csv
文件。@kasavbere啊,你正在使用
ndb
,一开始没有看到。实际上,您可以在回溯中看到错误的原因-调用的是
db
API,而不是
ndb
。我记得有人发布了一个类似的问题-如果我能找到它,我会将链接粘贴到这里(我认为它实际上是一个缺少的功能)。@kasavbere这里是活动的功能请求()。这句话来自于一个比我更可信的人的回答:)对不起,这个回答不令人满意。酷!投票!现在我得到了一个新的错误:
raise kinderor('kind\'%s\'%kind没有实现)google.appengine.ext.db.kinderor:kind'Article'没有实现
,所以现在它看到的是模块,而不是模块内的类——这实际上是模块内唯一的类。除此之外,其他所有文件都可以看到这个类。我需要
bulkloader.yaml
?因为我不能自动生成一个,你有我可以使用的例子吗?我正在传递一个
csv
文件。@kasavbere啊,你正在使用
ndb
,一开始没有看到。实际上,您可以在回溯中看到错误的原因-调用的是
db
API,而不是
ndb
。我记得有人发布了一个类似的问题-如果我能找到它,我会将链接粘贴到这里(我认为它实际上是一个缺少的功能)。@kasavbere这里是活动的功能请求()。这句话来自于一个比我更可信的人的回答:)很抱歉这个不令人满意的回答。我不喜欢投票否决那些好心帮助我的人。但下次你真的应该把这个问题读得更清楚些。我不喜欢投那些好心帮助别人的人的票。但是你下次应该把问题读得更清楚。我没有
bulkloader.yaml
文件。本教程提到不能为localhost自动生成一个。如果我需要一个,是否有人有一个文件应该是什么样子的例子?我正在传递一个csv文件。我没有
bulkloader.yaml
文件。本教程提到不能为localhost自动生成一个。如果我需要一个,是否有人有一个文件应该是什么样子的例子?我正在传递一个csv文件。