2015-05-08 92 views
0

我想調用一些函數,但我不知道如何導入包。我嘗試過,但失敗了。我能怎麼做? (我想用一些第三方包來分析每個文檔,下面的代碼是隻是一個測試)Couchdb-python:如何在map_reduce函數中調用函數?

請,如果你知道答案......

import couchdb as db 
import datetime 

couch = db.Server() 

d1 = couch['test'] 

def map(doc): 
    text = doc['text'] 
    ti = doc['timestamp_ms'] 
    ti = ti[:10] + '.' + ti[10:] 
    dateArray = datetime.datetime.utcfromtimestamp(float(time)) 
    if (dateArray.time().hour < 12): 
      yield ["am"], text 
    else: 
      yield ["pm"], text 

for row in d1.query(map, descending=True, language='python'): 
     print row.key, row.value 

回答

0

您可以使用日期時間內僅當您在地圖功能中導入日期時間時才映射函數。因此,您的示例看起來像 -


    def map(doc): 
     text = doc['text'] 
     ti = doc['timestamp_ms'] 
     ti = ti[:10] + '.' + ti[10:] 
     from datetime import datetime dateArray = datetime.utcfromtimestamp(float(time)) 
     if (dateArray.time().hour

但是,無法在映射函數中加載第三方庫。我試圖導入鼻子測試庫,並在沙發日誌中看到這一點 -

 
    [[{initial_call, 
     {couch_os_process,init,['Argument__1']}}, 
     {pid,<0.14643.4>}, 
     {registered_name,[]}, 
     {error_info, 
     {exit, 
     {function_clause, 
     [{couch_os_process,handle_info, 
      [{#Port<0.13927>, 
      {data, 
       {eol, 
       <<"{\"log\": \"Traceback (most recent call last):\n File \\"/usr/local/lib/python2.7/dist-packages/couchdb/view.py\\", line 79, in map_doc\n results.append([[key, value] for key, value in function(doc)])\n File \\"\\", line 5, in map\nImportError: No module named nose\n\"}">>}}}, 
      {os_proc,"couchpy",#Port<0.13927>, 
      #Fun, 
      #Fun,5000}]}, 
      {gen_server,handle_msg,5}, 
      {proc_lib,init_p_do_apply,3}]}, 
     [{gen_server,terminate,6}, 
     {proc_lib,init_p_do_apply,3}]}},

如果您將第三方庫直接安裝在主機python安裝中,而不是在虛擬環境中,則可能可以。但是,我不推薦這種做法。總是使用虛擬env。

相關問題