如何使用另一个模块

时间:2016-08-17 06:04:24

标签: python import module

我尝试导入模块并在当前的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'))

3 个答案:

答案 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文件,而不是我放在一起。