Python doctest 错误。OSX

1 投票
1 回答
504 浏览
提问于 2025-04-17 22:05

我有一台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 的规则,但这是另一个问题。

撰写回答