Python-import导入上级 本级 目录文件
假設(shè)有如下目錄結(jié)構(gòu):
-- dir0| file1.py| file2.py| dir3| file3.py| dir4| file4.pydir0文件夾下有file1.py、file2.py兩個(gè)文件和dir3、dir4兩個(gè)子文件夾,dir3中有file3.py文件,dir4中有file4.py文件。
1.導(dǎo)入同級(jí)模塊
python導(dǎo)入同級(jí)模塊(在同一個(gè)文件夾中的py文件)直接導(dǎo)入即可。
import xxx如在file1.py中想導(dǎo)入file2.py,注意無需加后綴".py":
import file2
#使用file2中函數(shù)時(shí)需加上前綴"file2.",即:
#file2.fuction_name()
有的時(shí)候使用import net 不能正常使用 顯示沒有該模塊 這時(shí)候在模塊前面加上一個(gè). 表示在同級(jí)目錄中。
這個(gè)時(shí)候用
from . import net from .preprocess import Preprocess2.導(dǎo)入下級(jí)模塊
導(dǎo)入下級(jí)目錄模塊也很容易,需在下級(jí)目錄中新建一個(gè)空白的__init__.py文件再導(dǎo)入:
from dirname import xxx
如在file1.py中想導(dǎo)入dir3下的file3.py,首先要在dir3中新建一個(gè)空白的__init__.py文件。
再使用如下語句:
plan A from dir3 import file3 或是plan B import dir3.file3 import dir3.file3 as df3但使用第二種方式則下文需要一直帶著路徑dir3書寫,較為累贅,建議可以另起一個(gè)別名。
3.導(dǎo)入上級(jí)模塊
要導(dǎo)入上級(jí)目錄下模塊,可以使用sys.path:
import sys sys.path.append("..") import xxx如在file4.py中想引入import上級(jí)目錄下的file1.py:
import sys sys.path.append("..") import file1sys.path的作用:當(dāng)使用import語句導(dǎo)入模塊時(shí),解釋器會(huì)搜索當(dāng)前模塊所在目錄以及sys.path指定的路徑去找需要import的模塊,所以這里是直接把上級(jí)目錄加到了sys.path里。
而且這個(gè)時(shí)候只需要用一次就行了,不需要在每個(gè)模塊中都使用,因?yàn)樯霞?jí)目錄已經(jīng)加到路徑列表中了。
打印一下路徑列表
print(sys.path)“…”的含義:等同于linux里的‘…’,表示當(dāng)前工作目錄的上級(jí)目錄。實(shí)際上python中的‘.’也和linux中一致,表示當(dāng)前目錄。
4.導(dǎo)入隔壁文件夾下的模塊
如在file4.py中想引入import在dir3目錄下的file3.py。
這其實(shí)是前面兩個(gè)操作的組合,其思路本質(zhì)上是將上級(jí)目錄加到sys.path里,再按照對(duì)下級(jí)目錄模塊的方式導(dǎo)入。
同樣需要被引文件夾也就是dir3下有空的__init__.py文件。
-- dir| file1.py| file2.py| dir3| __init__.py| file3.py| dir4| file4.py同時(shí)也要將上級(jí)目錄加到sys.path里:
import sys sys.path.append("..") from dir3 import file35.常見錯(cuò)誤及import原理:
在使用直接從上級(jí)目錄引入模塊的操作時(shí):
from .. import xxx 經(jīng)常會(huì)報(bào)錯(cuò):ValueError: attempted relative import beyond top-level package
這是由于相對(duì)導(dǎo)入時(shí),文件夾實(shí)質(zhì)上充當(dāng)?shù)氖莗ackage,也就是包的角色(比如我們常用的numpy、pandas都是包)。如果python解釋器沒有認(rèn)同該文件夾是package,那么這就是一個(gè)普通的文件夾,無法實(shí)現(xiàn)相對(duì)導(dǎo)入。
文件夾作為package需要滿足如下兩個(gè)條件:
文件夾中必須存在有__init__.py文件,可以為空。 不能作為頂層模塊來執(zhí)行該文件夾中的py文件。總結(jié)
以上是生活随笔為你收集整理的Python-import导入上级 本级 目录文件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python判断正确错误_python错
- 下一篇: window.open不重复打开同一个名