成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

module - python模塊from import語(yǔ)句相對(duì)導(dǎo)入,加不加點(diǎn)號(hào)有什么區(qū)別?

瀏覽:151日期:2022-07-28 13:58:53

問(wèn)題描述

python版本為2.7

目錄結(jié)構(gòu)

$ ls -R.:t.py util/./util:__init__.py __init__.pyc db.py db.pyc

內(nèi)容

util/db.py

# coding=utf-8 var=100 def show(): print var

t.py

# coding=utf-8 from .util.db import var # util包前面加點(diǎn)print var if __name__==’__main__’: print var

運(yùn)行報(bào)錯(cuò)

$ python t.pyTraceback (most recent call last): File 't.py', line 3, in <module> from .util.db import varValueError: Attempted relative import in non-package

提示不能在non-package下導(dǎo)入。

在當(dāng)前目錄下新建__init__.py后依然是相同錯(cuò)誤。

但是將util前面的點(diǎn)號(hào)去掉之后可以正常輸出,為什么呢?

謝謝

問(wèn)題解答

回答1:

相對(duì)導(dǎo)入只能用于同一個(gè)package里,并且包內(nèi)的文件不能單獨(dú)運(yùn)行

回答2:

t.py是作為主腳本執(zhí)行的,如果里面有from .的方式就回報(bào)錯(cuò)(只有包內(nèi)模塊才用這中方式)即使加了_init_,但是你還是直接執(zhí)行的,方式?jīng)]變。你應(yīng)該改成python -m xxx.t

標(biāo)簽: Python 編程