Python doctest 错误。OSX
我有一台13寸的MacBook Pro,正在运行最新的OSX系统。
不知道为什么,我无法运行doctest这个工具...
这是我的Python代码:
def area_tri(base, height):
"""
>>>area_tri(10, 10)
50
"""
return base / 2 * height
import doctest
doctest.testmod()
出现的错误信息是:
Traceback (most recent call last):
File "/Users/name/Documents/doctest.py", line 8, in <module>
import doctest
File "/Users/name/Documents/doctest.py", line 9, in <module>
doctest.testmod()
AttributeError: 'module' object has no attribute 'testmod'
我刚开始在我的Mac上编程,实在不知道怎么解决这个问题...
我的Python版本是3.3.4。
1 个回答
4
你的文件命名让解释器感到困惑。你把文件命名为 "/Users/name/Documents/doctest.py"
,这个名字和 doctest
模块是一样的。
请更改文件名,然后再试一次(确保也删除旧的 doctest.pyc
文件)。
示例:
你的代码会像预期的那样出错:
msvalkon@Lunkwill:/tmp$ python doctest.py
Traceback (most recent call last):
File "doctest.py", line 8, in <module>
import doctest
File "/tmp/doctest.py", line 9, in <module>
doctest.testmod()
AttributeError: 'module' object has no attribute 'testmod'
在重命名并删除 .pyc
文件后
msvalkon@Lunkwill:/tmp$ mv doctest.py dtest.py
msvalkon@Lunkwill:/tmp$ rm doctest.pyc
msvalkon@Lunkwill:/tmp$ python dtest.py
Traceback (most recent call last):
File "dtest.py", line 9, in <module>
doctest.testmod()
File "/usr/lib/python2.7/doctest.py", line 1885, in testmod
for test in finder.find(m, name, globs=globs, extraglobs=extraglobs):
File "/usr/lib/python2.7/doctest.py", line 900, in find
self._find(tests, obj, name, module, source_lines, globs, {})
File "/usr/lib/python2.7/doctest.py", line 954, in _find
globs, seen)
File "/usr/lib/python2.7/doctest.py", line 942, in _find
test = self._get_test(obj, name, module, globs, source_lines)
File "/usr/lib/python2.7/doctest.py", line 1026, in _get_test
filename, lineno)
File "/usr/lib/python2.7/doctest.py", line 645, in get_doctest
return DocTest(self.get_examples(string, name), globs,
File "/usr/lib/python2.7/doctest.py", line 659, in get_examples
return [x for x in self.parse(string, name)
File "/usr/lib/python2.7/doctest.py", line 621, in parse
self._parse_example(m, name, lineno)
File "/usr/lib/python2.7/doctest.py", line 679, in _parse_example
self._check_prompt_blank(source_lines, indent, name, lineno)
File "/usr/lib/python2.7/doctest.py", line 766, in _check_prompt_blank
line[indent:indent+3], line))
ValueError: line 2 of the docstring for __main__.area_tri lacks blank after >>>: '>>>area_tri(10, 10)'
注意你没有遵循 doctest
的规则,但这是另一个问题。