2016-08-17 4 views
1

モジュールをインポートして、そのモジュールの関数を現在のpythonファイルで使用しようとしています。 他のモジュールのpython関数の使い方

私はparser_tests.pyファイルにnosetestsを実行しますが、それは

例えばそのは明らかにparsrer.pyファイルで定義されているparse_subject機能が見つからない「定義されていない名 『parse_subject』」で失敗し

これはparsrerファイルである: WORD_LIST場合: ワード= word_list.pop(0)

DEF(WORD_LIST、期待)と一致

def peek(word_list): 
if word_list: 
    word = word_list[0] 
    return word[0] 
else: 
    return None 

#Confirms that the expected word is the right type, 

DEF 0

if word[0] == expecting: 
     return word 
    else: 
     return None 
else: 
    return None 

(WORD_LIST、word_type)スキップ: 一致(WORD_LIST、word_type)

DEF parse_verb(WORD_LIST): (WORD_LIST、 '停止')スキップPEEK(WORD_LIST)== word_typeながら を

if peek(word_list) == 'verb': 
    return match(word_list, 'verb') 
else: 
    raise ParserError("Expected a verb next.") 

DEF parse_object(WORD_LIST): (WORD_LIST、 '停止')スキップ next_word = PEEK(WORD_LIST)

if next_word == 'noun': 
    return match(word_list, 'noun') 
elif next_word == 'direction': 
    return match(word_list, 'direction') 
else: 
    raise ParserError("Expected a noun or direction next.") 

DEF parse_subject(WORD_LIST): は(WORD_LIST、 '停止')スキップ next_word = PEEK(WORD_LIST)

if next_word == 'noun': 
    return match(word_list, 'noun') 
elif next_word == 'verb': 
    return ('noun', 'player') 
else: 
    raise ParserError("Expected a verb next.") 

DEF parse_sentence(WORD_LIST): SUBJ = parse_subject(WORD_LIST) 動詞= parse_verb (WORD_LIST) OBJ = parse_object(WORD_LIST)

return Sentence(subj, verb, obj) 

これは私のテストはファイルである

DEF test_subject()

parsrer:( "/プロジェクト/ projectx48/ex48 H")

インポート: WORD_LIST = nose.toolsから

from nose.tools import * 

はASSERT_EQUALS インポートSYS sys.path.appendをインポート assert_equals(parse_subject(word_list)、(( ''、 ''、 ''、 ''、 '') 'noun'、 'bear'))

+1

あなたはどのようにそれをインポートしていますか? – levi

答えて

0

インポートモジュール

モジュール全体をインポートすることも、のを使用して特定の関数をインポートすることもできます。例えば

from parser_tests import parse_subject 

# and then you can invoke the function. 

parse_subject() 
0

あなたのコードを見ることなく、あなたの問題を診断する方法を正確に知ることは困難であるが、ここでは役立つかもしれないものについての私の最高の推測です。

まず、parserは既にPythonの組み込みモジュールです。したがって、parser.pyファイルの別の名前を考慮する必要があります。

第2に、parser.pyファイルが存在するディレクトリへのパスがsys.pathにあることを確認する必要があります。同様に、parser.pyが発見されているディレクトリは、あなたのpathに含まないである場合、あなたはsys.pathにそのパスを追加することができ

import sys 

for line in sys.path: 
    print line 

:あなたの現在のPythonファイルからこのスニペットを実行することによって、この自分で確認することができますこの:

import sys 
sys.path.append("/path/to/your/module") 

最後に、あなたはこのように、あなたの現在のPythonファイルに適切に機能をインポートしていることを確認してください:

from parser import parser_subject 
+0

Iveがあなたの明確なステップに従っていて、ファイル名をparserからparsrerに変更しました - ただ "no module named parsrer"と表示されます – nathanH05

+0

PYTHONPATHが 'に設定されているときからnosetestsを実行するディレクトリは重要ですか? – nathanH05

+0

質問を編集して更新されたコードの関連部分を含めることができれば、@ nathanH05の診断がはるかに簡単になります – Daniel

0

parserという組み込み関数が既に存在する可能性がありますか。私は私がローカルに作成したparser.pyファイルのうちの1つを、代わりにまとめたものを呼び出しています。

関連する問題