python from "." 导入模块报错

有一个包dir3,文件结构是这样的:
dir3/
dir3/__init__.py
dir3/mod.py
dir3/moda.py

mod.py代码如下

from . import moda
print('in mod.py')
z = 3

执行mod.py,在导入模块的时会报错,错误信息如下:

python2.7.3版本

Traceback (most recent call last):
  File "D:\dir1\dir2\dir3\mod.py", line 1, in <module>
    from . import moda
ValueError: Attempted relative import in non-package

python3.6.1版本

Traceback (most recent call last):
  File "D:\dir1\dir2\dir3\mod.py", line 1, in <module>
    from . import moda
ImportError: cannot import name 'moda'

我也是查了资料,而且python学习手册也是这么讲的(这本书感觉讲模块这一部分太啰嗦了,把我头都绕晕了),这应该是很简单的问题,我到底错在哪?

阅读 9.4k
1 个回答

使用相对路径进行import的脚本不能直接运行,这个文档有描述(原因是一旦执行,module的名字就变成了__main__而不是当前module):
https://docs.python.org/2/tut...

如果一定要执行可以通过如下命令:
python -m mod.py

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题