1

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

文件结构:

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

3 回答 3

1

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

于 2012-07-10T09:27:06.087 回答
0

Vinayak 的答案非常适用于 Python v3.3.2。如果目录'dir'中存在一堆非OOP Python模块,则可以成功地将'dir'中存在的任何文件中的任何方法导入文件(也存在于'dir'中)。

于 2013-10-26T20:57:17.487 回答
-1

根据 PEP328,以下代码应该可以工作。

from . import c

我的理解正确吗?

于 2012-07-10T09:27:39.580 回答