我尝试导入模块并在当前的python文件中使用该模块中的函数。
我在parser_tests.py文件上运行nosetests但它失败并且“name'sparse_subject'未定义”
例如,它找不到在parsrer.py文件中明确定义的parse_subject函数
这是解析器文件:
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匹配(word_list,期待): 如果word_list: word = word_list.pop(0)
if word[0] == expecting:
return word
else:
return None
else:
return None
def skip(word_list,word_type): 而peek(word_list)== word_type: 匹配(word_list,word_type)
def parse_verb(word_list): 跳过(word_list,'停止')
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) verb = parse_verb(word_list) obj = parse_object(word_list)
return Sentence(subj, verb, obj)
这是我的测试文件
from nose.tools import *
来自nose.tools的导入assert_equals 导入系统 sys.path.append( “H:/项目/ projectx48 / ex48”)
导入解析器
def test_subject(): word_list = [('noun','bear'),('verb','eat'),('stop','the'),('noun','honey')] assert_equals(parse_subject(word_list),('noun','bear'))
答案 0 :(得分:0)
您可以导入整个模块,也可以使用示例关键字中的专门导入该特定功能。
例如:
from parser_tests import parse_subject
# and then you can invoke the function.
parse_subject()
答案 1 :(得分:0)
如果没有看到您的代码,很难确切地知道如何诊断您的问题,但这是我最好的猜测,可能会有什么帮助。
首先,parser
已经是Python中的内置模块,因此您应该为 parser.py 文件考虑不同的名称。
其次,您应该确保在sys.path
中找到 parser.py 文件所在目录的路径。您可以通过从当前Python文件:
import sys
for line in sys.path:
print line
如果找到parser.py
的目录不包含在path
中,您可以将该路径追加到sys.path
,如下所示:
import sys
sys.path.append("/path/to/your/module")
最后,您应该确保在当前Python文件中正确导入您的功能,如下所示:
from parser import parser_subject
答案 2 :(得分:0)
可能是已经存在一个名为parser的内置函数。我正在调用我在本地创建的一个parser.py文件,而不是我放在一起。