module - python模块from import语句相对导入,加不加点号有什么区别?
本文介绍了module - python模块from import语句相对导入,加不加点号有什么区别?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
python版本为2.7
目录结构
$ ls -R
.:
t.py util/
./util:
__init__.py __init__.pyc db.py db.pyc
内容
util/db.py
# coding=utf-8
var=100
def show():
print var
t.py
# coding=utf-8
from .util.db import var # util包前面加点
print var
if __name__=='__main__':
print var
运行报错
$ python t.py
Traceback (most recent call last):
File "t.py", line 3, in <module>
from .util.db import var
ValueError: Attempted relative import in non-package
提示不能在non-package下导入。
在当前目录下新建__init__.py
后依然是相同错误。
但是将util前面的点号去掉之后可以正常输出,为什么呢?
谢谢
解决方案
相对导入只能用于同一个package里,并且包内的文件不能单独运行
这篇关于module - python模块from import语句相对导入,加不加点号有什么区别?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文