从更高级的布局导入模块

时间:2011-07-14 21:20:49

标签: python list bots

说这是我的包布局

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

因此,如果我想从bot.py中的工具导入database_validate,我会这样做:

from tools import database_validate

但对于core / hash / hashgen,我该如何导入呢?因为它稍微长一些。我知道我可能只是将所有内容放在一个文件中,但我很好奇如何从较长的文件夹布局中导入它。

3 个答案:

答案 0 :(得分:3)

构建包时 - 不要忘记__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 *

虽然为了简单起见,我不建议使用*本身使用*。

查看this - 由该男士自己撰写!

答案 1 :(得分:1)

import core.hash.hashgen

或者,对于更短但可能令人困惑的代码:

from core.hash import hashgen
# Don't forget hashgen now refers to a foreign module

答案 2 :(得分:0)

from package.core.hash import hashgen

您的代码应该是PYTHONPATH,您应该有__init__.py个文件