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前面的点号去掉之后可以正常输出,为什么呢?
谢谢
L'importation relative ne peut être utilisée que dans le même package et les fichiers du package ne peuvent pas être exécutés indépendamment
t.py est exécuté comme script principal. S'il contient une méthode from, une erreur sera signalée (seuls les modules du package utilisent cette méthode)
Même si _init_ est ajouté, vous exécutez toujours. directement. La méthode n’a pas changé. Vous devriez passer à python -m xxx.t