Python相对导入:尝试在非包中进行相对导入

时间:2017-03-26 22:53:29

标签: python import packages

所以我有一个非常简单的包,具有以下结构:

package/
   __init__.py
   a.py
   subpackage/
       __init__.py
       b.py

a.py:
    print __name__
    from .subpackage.b import *

b.py

    print __name__

1)为什么我从内部包返回时运行python -m aValueError: Attempted relative import in non-package。但是如果我离开包目录并运行python -m package.a它就可以工作并打印:

__main__
package.subpackage.b

另外,如果我将其作为具有__main__选项的模块运行,为什么它会将__name__称为-m a.py?

2)为什么然后我写一个c.py模块,我把它放在外包装中,只是导入from package import a我得到:

package.a
package.subpackage.b

所以我理解现在来自a __name__的{​​{1}}不是__main__,但是当我使用python -m选项作为模块运行时,为什么会这样呢?为什么如果我将相同的main.py置于包内,那么再次出现尝试的相对导入错误?

0 个答案:

没有答案