Python импортирует подкаталоги - PullRequest
2 голосов
/ 21 января 2012

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

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

prog.py
module/
    __init__.py
    code.py

Код для prog.py: pass

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

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

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

Ответы [ 3 ]

3 голосов
/ 21 января 2012

Если у вас следующая структура:

package
  __init__.py
  module.py

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

import package.module

или это:

from . import module

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

>>> import package
hello
3 голосов
/ 21 января 2012

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

import module

Python будет загружать только импортированные пакеты или модули.

Чтобы это работало, вам, вероятно, также нужен ответ jcollado.

2 голосов
/ 21 января 2012

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

prog.py
module/
    __init__.py
    code.py

Тогда import module импортирует код в module/__init__.py, а import module.code или from module import code импортирует код в module/code.py под локальным именем "module.code" или "code".

...