2013-03-05 21 views
12

Her öğrenci için ayrı klasörlerdeki bazı python gönderimlerini notlandırmaya çalışıyorum. Bunu yapmak için, çalıştırmak istediğim f() diyen bir fonksiyon var. Benim şimdiki yolu dosyasının bulunduğu biriyle aynı olup olmadığını, ben sadece, AncakPython alt klasörlerden içe aktarılıyor

import filename 
filename.f() 

yapmak daha iyi yolları vardır anlıyoruz? Örneğin, en aşağıdaki gibi dizin yapısı olduğunu varsayalım:

main.py 
student/run_this.py 

Öğrenci klasöründe "__init__.py" dosyası varsa, sadece

import student.run_this 

Ancak yazabilirsiniz biliyoruz, bu dosya olmadan, işe yaramıyor. Bulduğum

Bazı benzer sorular

  • http://www.daniweb.com/software-development/python/threads/192000/import-from-a-subdirectory-of-a-directory-on-pythonpath
  • Import module from subfolder
  • How to do relative imports in Python?
    • ancak bunların hiçbiri özellikle tatmin edici cevaplar verdi

      idi.

    +0

    Yani '__init __. Py' dosyası ile sorun nedir? – eazar001

    +1

    'student' klasörünü yolunuza ekledikten sonra' run_this 'dosyasını içe aktarın. Diğer cevaplar bunu yapmanı söyledi, ne işe yaramadı? –

    +1

    Zarif görünmediği kadar işe yaramadı. Ya da en azından, \ __ init __. Py'yi eklemek bana oldukça haklı görünüyor - alt klasörlere erişmek için dosya yapısını değiştirmek ahlaki gibi görünüyor. Yolu değiştirmek için bunun kötü bir uygulama olduğunu okudum, ancak makul bir çözüm gibi görünüyor. – vmkrish

    cevap

    8

    Başka hatalar yayınlarsanız

    from . import * 
    

    Ardından

    import student.module.py 
    

    olarak üst klasör modülleri öğrenci klasöründen herhangi modülleri çağırabilir içermelidir klasörün student içinde bir __init__.py modül oluşturmak karşı karşıya geliyorsanız, daha fazla yardımcı olabiliriz.

    +1

    Neden \ __ init __. Py'nin gerekli olduğunu açıklayan (veya materyalle bağlantı kurabilir) açıklayabilir misiniz? Bu çalışma sona erdi, ama ben tasarım mantığının – vmkrish

    +0

    \ _ \ _ init__.py dosyasının C++ veya python'daki sınıf devralma mantığı kadar basit olduğu konusunda biraz kafam karıştı. Python bir klasöre baktığında, içinde mevcut olan tüm modülleri içermez. Python \ _ \ _ init__ işlevinde bir sınıfa girdiğinde yapılacak işlevleri belirtirseniz, iyi anlar. Burada, python \ _ \ _ init__ kullanarak bir klasörle karşılaştığında gerekli veya tüm modülleri içe aktarıyoruz. –

    +0

    Bu cevap, sahip olduğum soruna cevap bulabildiğim tek cevaptır, teşekkürler @MathanKumar! –

    İlgili konular