如果在同一文件夹中的另一个文件中导入文件。
文件结构:
.
├── b
│ ├── c.py
│ ├── d.py
│ └── __init__.py
└── __init__.py
在 d.py 中:
import b.c
print "import successfully"
更新 1:
我两个都用
python d.py
和:
python b/d.py
程序无法运行并引发 ImportError。
为了解决这个问题,我使用
sys.path.insert(0, realpath(path_join(dirname(__file__), '../')))
但是,这似乎不是标准方式。
像一些著名的项目:龙卷风或其他什么,总是使用这种结构。但没有插入线。
如果导入语句在 unittest 文件中,则自动测试工具(如 sniffer、autonose)可以运行这种结构。
我不知道为什么。
PEP328 或 PEP366 并没有给我一个很好的解决方案。
PEP8 建议我这样做。
导入另一个模块(在另一个文件中)时也会出现此问题,例如:
├── a
│ ├── e.py
│ └── __init__.py
├── b
│ ├── c.py
│ ├── d.py
│ └── __init__.py
├── __init__.py