SORU
18 HAZİRAN 2010, Cuma


Python Burun Alma Hatası

Dosya yapısı test senaryomu altında modülleri tanımak nose testing framework elde edemiyorum. Sorunu gösteren basit bir örnek hazırladım. Aşağıda açıklayacağım.

İşte paket dosya yapısı:

./__init__.py
./foo.py
./tests
   ./__init__.py
   ./test_foo.py

foo.py içerir:

def dumb_true():
    return True

tests/test_foo.py içerir:

import foo

def test_foo():
    assert foo.dumb_true()

Her ikisi deınit.py dosyalar boş

Eğer ana dizin nosetests -vv foo.py (burada) ben çalıştırmak, ben alıyorum:

Failure: ImportError (No module named foo) ... ERROR

======================================================================
ERROR: Failure: ImportError (No module named foo)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/python/site-packages/nose-0.11.1-py2.6.egg/nose/loader.py", line 379, in loadTestsFromName
    addr.filename, addr.module)
  File "/usr/lib/python/site-packages/nose-0.11.1-py2.6.egg/nose/importer.py", line 39, in importFromPath
    return self.importFromDir(dir_path, fqname)
  File "/usr/lib/python/site-packages/nose-0.11.1-py2.6.egg/nose/importer.py", line 86, in importFromDir
    mod = load_module(part_fqname, fh, filename, desc)
  File "/home/user/nose_testing/tests/test_foo.py", line 1, in <module>
    import foo
ImportError: No module named foo

----------------------------------------------------------------------
Ran 1 test in 0.002s

FAILED (errors=1)

Testler/ dizin içinden çalıştırdığımda aynı hatayı alıyorum. Göre belgeleri an example buldum, burun anlam katan üst paketler için yolu yanı sıra dizininden hangi denir, ama bu değil, galiba oluyor benim açımdan.

Python 2.6.2 ile 8.04 Ubuntu koşuyorum. İnşa ve eğer bu konularda ise burun el ile (setup_tools ile değil) yükledim.

CEVAP
18 HAZİRAN 2010, Cuma


__init__.py bir üst düzey dizin var. Bu bir paket yapar. Aksi takdirde, nosetests çalışması gerekir.

Eğer bunu kaldırmak yok eğer doğru değilse, dir dizin adıdır import dir.foo import değiştirmek zorunda kalacaksın.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ChrisCrossMedia

    ChrisCrossMe

    17 EYLÜL 2009
  • Christian Atlas

    Christian At

    26 Mart 2009
  • TouchePro

    TouchePro

    27 EYLÜL 2007