假设我有以下内容(project1在python路径上):
/project1/utils/utils.py
def cool_function():
print "cool"
/project1/backup/utils.py
from utils.utils import cool_function
抛出“ImportError:没有名为utils的模块”。
我认为这是因为它在backup.utils中搜索utils.cool_function。是否有一个而不是重命名utils包?我认为我的命名惯例是有道理的,而且很自然,所以我不愿意改变它。如果这是首选和标准练习,我会重命名它!
谢谢!
编辑:我使用的是Python 2.7
答案 0 :(得分:2)
您可以使用relative imports:
from ..utils.utils import cool_function
答案 1 :(得分:1)
如果project1
是一个包(父目录在sys.path
并且__init__.py
),则可以执行from project1.utils.utils import cool_function
。另请参阅PEP328,即new in python 2.5。如果您使用的是2.5或更高版本,from ..utils.utils import cool_function
也可以使用。
答案 2 :(得分:0)
与我合作。
使用以下项目结构:
project/
|-- run.py
`-- utils
| |-- __init__.py
| |-- utils.py
|-- backup
|-- __init__.py
|-- utils.py
从python3 run.py
目录拨打project
的地方。
修改:抱歉,我发现这不适用于python-2.x
。