好的,我認爲無論我做錯了什麼,它可能是非常明顯的,但我無法弄清楚。我已經閱讀並重新閱讀了關於包的教程部分,我唯一能想到的是這不會起作用,因爲我直接執行它。這裏的目錄設置:Python軟件包?
eulerproject/
__init__.py
euler1.py
euler2.py
...
eulern.py
tests/
__init__.py
testeulern.py
這裏是testeuler12.py的內容(第一測試模塊我已經寫了):
import unittest
from .. import euler12
class Euler12UnitTests(unittest.TestCase):
def testtriangle(self):
"""
Ensure that the triangle number generator returns the first 10
triangle numbers.
"""
self.seq = [1,3,6,10,15,21,28,36,45,55]
self.generator = euler12.trianglegenerator()
self.results = []
while len(self.results) != 10:
self.results.append(self.generator.next())
self.assertEqual(self.seq, self.results)
def testdivisors(self):
"""
Ensure that the divisors function can properly factor the number 28.
"""
self.number = 28
self.answer = [1,2,4,7,14,28]
self.assertEqual(self.answer, euler12.divisors(self.number))
if __name__ == '__main__':
unittest.main()
現在,當我從IDLE和命令執行此線,而在目錄中,我得到以下錯誤:
Traceback (most recent call last):
File "C:\Documents and Settings\jbennet\My Documents\Python\eulerproject\tests\testeuler12.py", line 2, in <module>
from .. import euler12
ValueError: Attempted relative import in non-package
我認爲這個問題是因爲我直接運行它,我不能做的相對進口(因爲__name__
變化,我含糊對軟件包描述的理解是,__name__
是它如何知道它在哪個軟件包中的一部分),但是在那種情況下,你們如何導入從測試代碼上級存儲的'生產'代碼?
只需選擇它並點擊代碼示例按鈕。或者將它包裝在'' – 2009-08-27 18:52:04