22

相対インポートでdoctestを使用するのに問題があります。簡単な解決策は、相対的なインポートを取り除くことです。他にありますか?

2つのファイルを含むexampleというパッケージがあるとします。

example/__init__.py

"""
This package is entirely useless.
>>> arnold = Aardvark()
>>> arnold.talk()
I am an aardvark.
"""

from .A import Aardvark

if __name__ == "__main__":
    import doctest
    doctest.testmod()

example / A.py

class Aardvark(object):
    def talk(self):
        print("I am an aardvark.")

私が今試みたら

python example/__init__.py

その後、エラーが発生します

Traceback (most recent call last):
  File "example/__init__.py", line 8, in <module>
    from .A import Aardvark
ValueError: Attempted relative import in non-package
4

2 に答える 2

18

別のファイルを作成しますmy_doctest_runner.py

if __name__ == "__main__":
    import doctest
    import example
    doctest.testmod(example)

でdoctestsmy_doctest_runner.pyを実行するために実行しますexample/__init__.py

$ python2.7 my_doctest_runner.py
**********************************************************************
File "/tmp/example/__init__.py", line 4, in example
Failed example:
    arnold.talk()
Expected:
    I am an aaardvark.
Got:
    I am an aardvark.
**********************************************************************
1 items had failures:
   1 of   2 in example
***Test Failed*** 1 failures.
于 2010-10-28T21:32:42.613 に答える
-1

ただやる

from A import Aardvark
于 2010-10-28T21:21:50.337 に答える