2012-12-08 22 views
1

我還是Python和GAE的新手。我有一個運行良好的本地服務器上的應用程序。我可以添加實體到我的數據存儲,我可以查看我的網站等:一切都很好。bulkloader不導入ndb.model

現在我正試圖使用​​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模塊的其他文件位於相同的位置。

+0

我沒有'bulkloader.yaml'文件。本教程提到無法爲localhost自動生成一個。如果我需要一個,有沒有人有一個文件應該是什麼樣子的例子?我正在傳入一個csv文件。 – kasavbere

回答

1

如果您的PYTHONPATH設置不正確,也會發生這種情況。如果你是在Linux上,嘗試運行此運行Bulkloader前:

export PYTHONPATH=$PYTHONPATH:. 

此附加當前目錄切換到您的PYTHONPATH,並應該讓你my_model模塊可見。由於我的記憶很糟糕,而且我總是忘記這麼做,所以我最終使用了一個簡單的shell腳本,在開始時包含了這個腳本,然後是bulkload命令本身。

如果您使用的是Windows,則應該可以使用sys.path.append修改路徑。沒有測試過這一點,但你可以嘗試添加該給你的腳本(注意,這應該在Linux上工作以及):

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

酷!投票!現在我得到了一個新的錯誤:'KindError('沒有實現類'\'%s \''%kind) google.appengine.ext.db.KindError:沒有實現類的'文章' – kasavbere

+0

所以現在它看到的是模塊,而不是模塊內部的類 - 它實際上是模塊內唯一的類。每個其他文件都能看到這個類 - 除了這個裝載器外。 – kasavbere

+0

我需要一個'bulkloader.yaml'嗎?由於我無法自動生成一個,你有我可以使用的例子嗎?我傳入一個'csv'文件。 – kasavbere

0

您的代碼應位於名爲my_model.py的文件中。您正在收到該錯誤,因爲沒有名爲my_module的模塊。可能值得閱讀Python modulepackage文檔。

+0

我不喜歡對那些善意嘗試幫助的人投票。但下次你應該更好地閱讀這個問題。 – kasavbere