它__init__.py
不是init.py
。确保层次结构中的每个目录都包含它以便能够导入。
编辑:我设法重现它。这是目录结构:
cesar@cesar-laptop:/tmp/asdasd$ 树
.
`-- 我的应用
|-- __init__.py
|-- 型号
| |-- __init__.py
| `--模型.py
|-- 脚本
| |-- 数据.py
| `-- __init__.py
`-- 测试
|-- __init__.py
`-- 测试.py
我将以下代码放在最开始data.py
以缩小问题范围:
import sys
import pprint
pprint.pprint(sys.path)
from myapp.models.models import *
以 OP 指示的方式运行会data.py
产生 ImportError:
cesar@cesar-laptop:/tmp/asdasd$ python myapp/scripts/data.py
['/tmp/asdasd/myapp/scripts',
'/usr/lib/python2.6',
'/usr/lib/python2.6/plat-linux2',
'/usr/lib/python2.6/lib-tk',
-- 跳过 --
'/usr/local/lib/python2.6/dist-packages']
回溯(最近一次通话最后):
文件“myapp/scripts/data.py”,第 6 行,在
从 myapp.models.models 导入 *
ImportError:没有名为 myapp.models.models 的模块
但这种方式就像一个魅力:
cesar@cesar-laptop:/tmp/asdasd$ python -m myapp.scripts.data
['',
'/usr/lib/python2.6',
'/usr/lib/python2.6/plat-linux2',
'/usr/lib/python2.6/lib-tk',
-- 跳过 --
'/usr/local/lib/python2.6/dist-packages']
注意第一个条目的区别sys.path
。