python导入同一文件夹

时间:2012-07-10 09:22:18

标签: python import pep8

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

文件结构:

.
├── 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

3 个答案:

答案 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

我的理解是否正确?