python导入同一文件夹

python import at same folder

如果在同一文件夹的另一个文件中导入文件。

文件结构:

1
2
3
4
5
6
.
├── b
│   ├── c.py
│   ├── d.py
│   └── __init__.py
└── __init__.py

在D.py中:

1
2
import b.c
print"import successfully"

更新1:

我两者都用

1
python d.py

还有:

1
python b/d.py

程序无法运行并引发导入错误。

为了解决这个问题,我使用

1
    sys.path.insert(0, realpath(path_join(dirname(__file__), '../')))

然而,这似乎不是标准的方法。

就像一些著名的项目:龙卷风或其他什么,总是使用这种结构。但没有插入行。

如果导入语句在UnitTest文件中,自动测试工具(如sniffer、autonose)可以运行这样的结构。

我不知道为什么。

PEP328或PEP366不能给我一个很好的解决方案。

Pep8建议我这样做。

导入另一个模块(在另一个文件中)时也会出现此问题。例如:

1
2
3
4
5
6
7
8
├── a
│   ├── e.py
│   └── __init__.py
├── b
│   ├── c.py
│   ├── d.py
│   └── __init__.py
├── __init__.py


您应该使用python b/d.py而不是python d.py


Vinayak的答案非常适合于Pythonv3.3.2。如果目录"dir"中存在大量非oop python模块,则可以成功地将任何方法从"dir"中的任何文件导入到文件(也存在于"dir"中)。


根据PEP328,以下代码应该有效。

1
from . import c

我的理解正确吗?