Импорт модулей из более продвинутого макета - PullRequest
0 голосов
/ 15 июля 2011

Скажите, что это мой макет пакета

Package
    :: core
        :: hash
            :: hashgen.py
            :: validate.py
        :: common
            :: classes.py
    :: tools
        :: database_validate.py
    :: bot.py
    :: config.py

Так что, если бы я хотел импортировать database_validate из инструментов в bot.py, я бы сделал:

from tools import database_validate

Но для ядра / хэша/ hashgen, как мне импортировать это?Потому что это немного дольше.Я знаю, что, возможно, могу просто поместить все в один файл, но мне любопытно, как сделать так, чтобы он импортировался из более длинного макета папки.

Ответы [ 3 ]

3 голосов
/ 15 июля 2011

При сборке пакета - не забудьте __init__.py. Это должно быть в каждом дереве, из которого вы хотите импортировать. В вашем примере это должно выглядеть так ..

Package
    __init__.py
    :: core
        __init__.py
        :: hash
            __init__.py
            :: hashgen.py
            :: validate.py
        :: common
            __init__.py
            :: classes.py
    :: tools
        __init__.py 
       :: database_validate.py
    :: bot.py
    :: config.py

Как только это будет сделано, вы можете, как предложил phihag

from package.core.hash.hashgen import *

Хотя я не рекомендую использовать * как таковой для простоты.

Проверьте это - Автор самого человека!

1 голос
/ 15 июля 2011
import core.hash.hashgen

В качестве альтернативы, для более короткого, но потенциально запутанного кода:

from core.hash import hashgen
# Don't forget hashgen now refers to a foreign module
0 голосов
/ 15 июля 2011
from package.core.hash import hashgen

Ваш код должен быть в PYTHONPATH, и вы должны иметь __init__.py файлов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...