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前面的点号去掉之后可以正常输出,为什么呢?
谢谢
Import relatif hanya boleh digunakan dalam pakej yang sama dan fail dalam pakej tidak boleh dijalankan secara bebas
t.py dilaksanakan sebagai skrip utama Jika terdapat kaedah dari di dalamnya, ralat akan dilaporkan (hanya modul dalam pakej menggunakan kaedah ini)
Walaupun _init_ ditambahkan, anda masih melaksanakan. ia secara langsung. Anda harus menukar kepada python -m xxx.t