从当前目录强制导入模块

8 浏览
0 Comments

从当前目录强制导入模块

我有一个名为p的包,里面有ab两个模块。a依赖于b

b.py的内容如下:

import a

然而,我希望确保b从同一个p包目录中导入我的a模块,而不仅仅是从PYTHONPATH中导入任意的a模块。

因此,我想要将b.py修改如下:

from . import a

只要我在p包目录之外导入b,这个方法就有效。假设有以下文件:

/tmp
    /p
       a.py
       b.py
       __init__.py

以下操作有效:

$ cd /tmp
$ echo 'import p.b' | python

以下操作无效:

$ cd /tmp/p
$ echo 'import b' | python
Traceback (most recent call last):
  File "", line 1, in 
  File "b.py", line 1, in 
    from . import a
ValueError: Attempted relative import in non-package

为什么?

附注:我使用的是Python 2.7.3版本。

0