2012-01-21 2 views
2

Я пытаюсь импортировать все файлы из подкаталога, поэтому я решил написать __init__.py в этом подкаталоге для импорта файлов. Однако, когда я это делаю, он ничего не импортирует.Python импортирует подкаталоги

структура файла:

prog.py 
module/ 
    __init__.py 
    code.py 

Код для prog.py: pass

Код для __init__.py: import code

Код для code.py: print('hello')

Когда я бегу prog.py ничего не происходит. Почему он не печатает hello, и есть ли лучший способ легко импортировать все из подкаталога?

+0

В вашей файловой структуре нет каталогов ... – Thomas

+0

Спасибо, это был надзор. Исправлена. –

ответ

3

Поместите это в prog.py:

import module 

Python будет загружать только пакеты или модули, которые импортируются.

Чтобы заставить его работать, вам, вероятно, нужен ответ jcollado.

2

Предположим, у вас есть файл структуры, как это:

prog.py 
module/ 
    __init__.py 
    code.py 

Тогда import module будет импортировать код в module/__init__.py и import module.code или from module import code будет импортировать код в module/code.py под местным названием «module.code» или «код ».

+0

Я понимаю это, но он не ответил ни на один из моих вопросов. –

3

Если иметь следующую структуру:

package 
    __init__.py 
    module.py 

В __init__.py вы можете попробовать это:

import package.module 

или это:

from . import module 

Таким образом, если package в ваш PYTHONPATH, вы получите ожидаемое поведение:

>>> import package 
hello 
+0

Я понимаю это, но он не ответил ни на один из моих вопросов. –

+0

Повторяя ваш вопрос, я вижу, что 'prog.py' содержит только' pass' (без 'import') и что вы просто запускаете' prog.py'. Это верно? – jcollado

+0

Да. Из того, что я понимаю, '__init __. Py' должен запускаться независимо, а затем импортировать' code.py' из подкаталога и таким образом быть доступным через prog. –

Смежные вопросы