如果在同一文件夹中的另一个文件中导入文件。
文件结构:
.
├── 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
答案 0 :(得分:1)
您应该使用python b/d.py
代替python d.py
。
答案 1 :(得分:0)
Vinayak的答案适用于Python v3.3.2。 如果目录'dir'中存在一堆非OOP Python模块,则可以成功地将'dir'中存在的任何文件中的任何方法导入到文件中(也存在于'dir'中)。
答案 2 :(得分:-1)
根据PEP328,以下代码应该有效。
from . import c
我的理解是否正确?