说这是我的包布局
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,我该如何导入呢?因为它稍微长一些。我知道我可能只是将所有内容放在一个文件中,但我很好奇如何从较长的文件夹布局中导入它。
答案 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
个文件