精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Python 的 import 是怎么工作的?

開發(fā) 前端
本文分享了什么是模塊(module),什么是包(package),import 的搜索路徑,也分享了相對導(dǎo)入和絕對導(dǎo)入的區(qū)別,最后舉了一個(gè)非常實(shí)用的 import 例子,方便你構(gòu)建自己的包。

你好,我是 somenzz,可以叫我征哥。

Python 的 import 是非常直觀的,但即使這樣,有時(shí)候你會發(fā)現(xiàn),明明包就在那里,我們?nèi)詴龅? ModuleNotFoundError,明明相對路徑非常正確,就是報(bào)錯

ImportError: attempted relative import with no known parent package

導(dǎo)入同一個(gè)目錄的模塊和不同的目錄的模塊是完全不同的,本文通過分析使用 import 經(jīng)常遇到的一些問題,來幫助你輕松搞定 import ,據(jù)此,你可以輕松創(chuàng)建屬于自己的包。

1.什么是模塊(module),什么是包(package)

模塊(module)

模塊與包的關(guān)系,可以類比文件和目錄,模塊就是文件。

Python 文檔中這樣描述,一個(gè) Python 文件就是一個(gè)模塊,Python 的文件名(不帶后綴.py)就是模塊名。

一個(gè) module 可以包含變量、函數(shù)和類,它們是該 module 定義的命名空間的一部分,因此變量的命名問題不是問題,因?yàn)閮蓚€(gè)不同的模塊可以有同名的變量、函數(shù)和類。

包(package)

模塊與包的關(guān)系,可以類比文件和目錄,包就是目錄。

package 里面可以有 module,也可以有子包(sub-package)。一個(gè)模塊定義一個(gè)命名空間,以便變量、函數(shù)和類可以在兩個(gè)不同的模塊中具有相同的名稱,同樣的,一個(gè)包對其組成的包和模塊做同樣的事情,可以通過點(diǎn)號訪問主包中的模塊和包。

一個(gè)基本的 package 可以包含 sub-package、modules、__init__.py(Python 3.3 之后非必需)、setup.py。一個(gè)可能的 package 結(jié)構(gòu)如下所示:

而 setup.py 存在于你的 package 所在的主目錄中,包含配置信息,如所需的依賴項(xiàng)、腳本和子包。你還可以指定有關(guān) package 的元數(shù)據(jù),例如 package 的名稱、作者、描述等。

setup.py 是 pip 用來安裝你的包的文件。

2.import 時(shí)發(fā)生了什么

先舉一個(gè)簡單的例子,比如說同一個(gè)目錄有兩個(gè)文件,file1.py 和 file2.py,內(nèi)容很簡單,就打印各自的文件名,不同的是 file2.py 里面 import 了 file1:

#file1.py
print("This is file1.py")
#file2.py
print("This is file2.py")
import file1

運(yùn)行 file2.py 可以得到下面的結(jié)果:

? python file2.py
This is file2.py
This is file1.py

可以看出:

  • import 很直觀,用誰就 import 誰。
  • import 語句就是一個(gè)普通的語句,可以放在任何位置。
  • 一個(gè)文件被 import 的時(shí)候,就會被執(zhí)行,其內(nèi)部的類或?qū)ο髮⑻砑拥狡涿臻g。

我們還要知道 import 的搜索順序,只需要記住一點(diǎn),那就是 import 會去 sys.path 里面搜索。

比如我在 file2.py 的末尾添加一行代碼:import sys; print(sys.path) 就可以打印 import 的搜索路徑:

可以看出 sys.path 的順序:

  • 會先搜索執(zhí)行腳本所在的路徑
  • 標(biāo)準(zhǔn)庫
  • 第三方庫 site-packages

關(guān)于 sys.path 需要你注意的是:

  • 在解釋器環(huán)境下,sys.path[0] 就是解釋器啟動時(shí)所在的路徑 ''
  • sys.path 并不會依賴當(dāng)前程序的工作路徑 - os.getcwd(),僅僅依賴第一個(gè)腳本所在的路徑:

  • 如果一個(gè)模塊導(dǎo)入另一個(gè)模塊,而后者又導(dǎo)入另一個(gè)模塊,則第一個(gè)模塊的 sys.path 是解釋器搜索第二個(gè)導(dǎo)入語句的位置。

一旦模塊或包被找到,就會執(zhí)行該模塊或包。如果包里面有初始化文件 __init__.py,導(dǎo)入的時(shí)候,會先執(zhí)行 __init__.py。

然后要導(dǎo)入的項(xiàng)目就添加到了其命名空間內(nèi),我們可以通過 xx.yy 的方式來使用。

3.什么時(shí)候用相對導(dǎo)入,什么時(shí)候用絕對導(dǎo)入

先看看什么是絕對導(dǎo)入,所謂絕對導(dǎo)入就是這樣的形式:

import aa
import aa.bb
from aa import bb

這樣的方式很直觀, import 會去 sys.path 查找就行了,如果遇到了 ModuleNotFoundError,思考一下為什么 sys.path 沒有我們要導(dǎo)入的包,或者手動把這個(gè)包的路徑插入到 sys.path 中去。

再看看什么是相對導(dǎo)入,所謂相對導(dǎo)入就是這樣的形式:

from . import aa
from .aa import bb
from .. import yy

也就是說相對路徑中有個(gè) . 號,用來表明要導(dǎo)入的模塊或當(dāng)前的包的相對位置。

舉個(gè)例子,我們 pythonimportexample 目錄下新建一個(gè)目錄 subpackage1,在 subpackage1 內(nèi)新建兩個(gè)文件 file3.py、file4.py。

內(nèi)容如下:

file3.py :

print("This is file3.py")

file4.py:

from . import file3
print("This is file4.py")

只要我們直接運(yùn)行 file4.py,那是一定會報(bào)錯的:

Python 提示我們:

ImportError: attempted relative import with no known parent package

也就是說相對導(dǎo)入不知道父包是誰,換句話說,這是一個(gè)子包,必須讓父包來調(diào)用它,直接運(yùn)行這個(gè)文件是不行的,即使你在 file4.py 的目錄 subpackage1 同級的目錄執(zhí)行該文件也是不行的,見上圖。

但是在 file4.py 的目錄 subpackage1 同級的目錄作為一個(gè) module 來執(zhí)行是可以的,如下圖:

換句話說,我們把 subpackage1 作為一個(gè)包來讓別人用,相對導(dǎo)入是可以的,比如說我們在目錄 subpackage1 同級的目錄新建一個(gè) file5.py 的文件,內(nèi)容如下:

file5.py:

from subpackage1 import file4。

然后,執(zhí)行 python file5.py 可以看出,相對導(dǎo)入已經(jīng)正常工作:

結(jié)論

  • 如果是當(dāng)做腳本文件直接運(yùn)行的,使用絕對導(dǎo)入。
  • 如果是當(dāng)做模塊供其他文件導(dǎo)入,使用相對導(dǎo)入。

4.一個(gè)自定義包的例子

先上一個(gè)圖來看下目錄及引用結(jié)構(gòu),方塊的是目錄,橢圓的是文件,曲線是引用:

其中 import_example 目錄下有 setup.py 和 run.py

run.py 導(dǎo)入了 file4、file5、file6。

file4 導(dǎo)入了 file3,file5 導(dǎo)入了 file3。

file6 導(dǎo)入了 file2,file2 導(dǎo)入了 file1。

現(xiàn)在我們來執(zhí)行一下 run.py 看下效果:

可以看出所有相對導(dǎo)入都已正常工作,雖然 file3 被導(dǎo)入了兩次,但只執(zhí)行了一次,說明 Python 內(nèi)部已經(jīng)考慮了同一個(gè)包的多重導(dǎo)入問題。

自定義包就是讓其他文件導(dǎo)入使用的,因此 pythonimportexample目錄下都使用相對導(dǎo)入,源代碼見:

https://gitee.com/somenzz/code-example/tree/master/import_example

點(diǎn)閱讀原文也可以直接訪問。

這里還有一些自定義包的例子:

  • dbinterface[1]
  • transferfile[2]

最后的話

本文分享了什么是模塊(module),什么是包(package),import 的搜索路徑,也分享了相對導(dǎo)入和絕對導(dǎo)入的區(qū)別,最后舉了一個(gè)非常實(shí)用的 import 例子,方便你構(gòu)建自己的包。

責(zé)任編輯:武曉燕 來源: Python七號
相關(guān)推薦

2024-08-20 16:27:54

2024-03-07 09:20:16

2024-12-25 15:42:39

視頻數(shù)據(jù)實(shí)時(shí)直播

2018-09-13 13:52:08

2024-02-19 00:00:00

Docker輕量級容器

2025-01-14 08:13:11

2024-12-04 08:40:19

2011-02-18 09:56:42

Facebook人才FaceBook

2021-05-10 17:20:55

AIOps開發(fā)人員人工智能

2011-08-08 13:45:58

jQuery

2024-06-24 00:07:00

開源es搜索引擎

2021-09-28 08:31:22

Flex:1 CSSflex屬性

2018-09-05 08:59:51

服務(wù)器DNS網(wǎng)絡(luò)

2023-03-06 00:27:02

Kubernetesscheduler系統(tǒng)

2023-03-03 11:12:34

Kubernetes控制器后端

2021-02-02 10:53:16

Python編程開發(fā)

2024-05-28 09:49:42

Python對象函數(shù)

2024-09-06 17:55:27

Springboot開發(fā)

2023-04-18 14:53:48

2010-08-02 16:56:03

ICMP協(xié)議
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

日本特级黄色大片| 国产区精品在线观看| jizz欧美性20| 国产91在线播放精品| 亚洲伦在线观看| 99国产高清| 国产精品人人人人| 婷婷亚洲五月| 精品一区二区三区三区| 亚洲精品成人在线播放| aaa在线播放视频| 中文字幕成人网| 日韩视频在线观看免费视频| 日韩不卡高清视频| 亚洲九九在线| 日韩成人中文字幕在线观看| 一级黄色特级片| 美女国产一区二区三区| 欧美日韩美少妇| 屁屁影院ccyy国产第一页| 伦理片一区二区三区| 国产精品一区在线观看乱码| 日韩免费精品视频| 久久一区二区三| www.97av.com| 亚洲人成免费| 草民午夜欧美限制a级福利片| 国产乱了高清露脸对白| 美女久久精品| 欧美日韩精品一二三区| 国产精品333| 亚洲第一图区| 中文字幕一区二区三区四区 | 国产一区二区色噜噜| 亚洲成人av电影| 永久免费在线看片视频| 国产系列电影在线播放网址| 成人黄色一级视频| 7777奇米亚洲综合久久| 中文字幕一区二区三区四区免费看| 伊人久久亚洲美女图片| 欧美成人午夜激情在线| 免费一级suv好看的国产网站| 精品在线91| 日韩av中文字幕在线| 中文字幕无人区二| 欧美a在线观看| 欧美一区三区四区| 五月六月丁香婷婷| 国产精品一区二区三区av| 欧美日韩精品是欧美日韩精品| 干日本少妇首页| 国模私拍一区二区国模曼安| 香蕉加勒比综合久久| 男人天堂a在线| 电影k8一区二区三区久久| 一区二区三区资源| 97av中文字幕| av在线网页| 精品久久久国产精品999| 男人日女人逼逼| 北岛玲heyzo一区二区| 韩曰欧美视频免费观看| 丝袜老师办公室里做好紧好爽| 一二三四视频在线中文| 色综合天天综合色综合av | 免费毛片在线播放免费| 韩日成人av| 97av视频在线| 日韩国产成人在线| 麻豆精品国产传媒mv男同| 国产精品中文字幕在线| 国产精品人人爽| 国产suv精品一区二区6| 精品无码久久久久国产| 亚洲综合第一| 美女欧美视频在线观看免费 | 18黄暴禁片在线观看| 18aaaa精品欧美大片h| 午夜日韩在线电影| 国产激情在线观看视频| 在线播放成人| 亚洲第一视频网站| 亚洲欧洲久久久| 午夜激情久久| 国产综合在线看| 无码人妻久久一区二区三区不卡| 麻豆91精品视频| 岛国一区二区三区高清视频| 清纯唯美亚洲色图| 亚洲人成网站在线| 熟女少妇在线视频播放| 国产一区一一区高清不卡| 欧美一区二区三区视频| 99久久人妻精品免费二区| 欧美三级伦理在线| 欧美极品美女视频网站在线观看免费| 91视频免费网址| 极品少妇一区二区三区精品视频| 国产欧美日韩综合一区在线观看 | 久久精品国亚洲| 日韩欧美激情视频| 免费不卡在线视频| 国产在线一区二区三区欧美| 伊人在线视频| 欧美日韩一区二区三区| 樱花草www在线| 亚洲自拍电影| 久久久久久久久久av| 国产美女www| 91丝袜呻吟高潮美腿白嫩在线观看| 亚洲高清123| 深夜成人在线| 日韩女同互慰一区二区| 岛国片在线免费观看| 99热免费精品在线观看| 91久久精品美女高潮| 欧美日韩在线精品一区二区三区激情综 | 欧美性猛交xxxx免费看久久久| www.污污视频| 精品国产一区二区三区小蝌蚪 | 91黑人精品一区二区三区| 国产福利电影一区二区三区| 日韩欧美精品一区二区三区经典| 俺来也官网欧美久久精品| 欧美日韩精品福利| 91成年人网站| 香蕉成人久久| 国精产品一区二区| 丁香高清在线观看完整电影视频| 91精品国产91热久久久做人人 | 男人的天堂在线免费视频| 亚洲一区在线观看免费观看电影高清 | 日本一级黄色大片| 国产成人精品aa毛片| 香蕉精品视频在线| 久久亚洲精品中文字幕| 中日韩美女免费视频网址在线观看| 在线观看中文字幕视频| 粉嫩aⅴ一区二区三区四区五区 | 国产精品腿扒开做爽爽爽挤奶网站| 亚洲影院色在线观看免费| 色三级在线观看| 欧美视频你懂的| 永久免费毛片在线观看| 久久婷婷亚洲| 日本午夜精品一区二区| 天天免费亚洲黑人免费| 亚洲日本中文字幕| 国产又粗又猛又爽又| 国产偷v国产偷v亚洲高清| 99久久国产宗和精品1上映| 亚洲人挤奶视频| 日韩av观看网址| 国产黄色片在线播放| 欧美在线视频不卡| 天堂а√在线中文在线鲁大师| 米奇777在线欧美播放| 久久99精品久久久水蜜桃| 日韩av影片| 亚洲欧美资源在线| 中文字幕人妻丝袜乱一区三区| 国产亚洲欧美一级| 亚洲视频一二三四| 一区二区三区毛片免费| 北条麻妃高清一区| 麻豆视频在线观看免费网站黄| 精品亚洲永久免费精品 | 日韩一区国产二区欧美三区| www.毛片com| 成人在线视频一区二区| 欧美日韩在线中文| 91一区二区| 99蜜桃在线观看免费视频网站| 成人爽a毛片免费啪啪动漫| 日韩精品免费在线视频| 中文字幕人妻互换av久久| 亚洲久草在线视频| 国产精品无码永久免费不卡| 青草国产精品久久久久久| 黄色网zhan| 台湾色综合娱乐中文网| 国产日产欧美a一级在线| 欧美videossex另类| 亚洲精品视频免费| 91资源在线视频| 亚洲成av人片| 国产一区第一页| 成人午夜又粗又硬又大| 国产理论在线播放| 雨宫琴音一区二区在线| 日韩理论片在线观看| 91精品啪在线观看国产爱臀| 国产精品电影观看| 免费电影视频在线看 | 黄av在线播放| 日韩av在线网站| 国产免费久久久| 日韩欧美国产黄色| 玖玖爱这里只有精品| 2020日本不卡一区二区视频| 日本在线观看视频一区| 久久精品三级| 日韩亚洲欧美一区二区| 免费黄色成人| 不卡的av一区| 亚洲成人1区| 日韩av色综合| 国产精品69xx| 久久午夜a级毛片| 黄色的视频在线免费观看| 欧美成人精品福利| 国产精品毛片一区二区在线看舒淇| 精品福利在线看| 紧身裙女教师波多野结衣| 久久九九99视频| 国产精品九九视频| 国产美女av一区二区三区| 欧美日韩大尺度| 亚洲欧美久久久| 欧美男女爱爱视频| 国产精品多人| 路边理发店露脸熟妇泻火| 成人精品影院| 欧美最大成人综合网| 欧美亚洲色图校园春色| 亚洲在线观看视频| 自拍偷拍亚洲图片| 国产精品网站入口| 亚洲成人av观看| 国产成人涩涩涩视频在线观看 | 欧美涩涩视频| 色一情一乱一乱一区91| 国产精品99视频| 一区二区精品国产| 日本电影一区二区| 成人福利视频网| 欧美中文字幕视频| 黄色一级片在线观看| 亚洲欧洲视频在线| 你懂的视频在线| 亚洲二区在线播放视频| 蜜桃视频在线观看www| 日韩一级高清毛片| 国产国语亲子伦亲子| 欧美剧情片在线观看| 在线中文字幕网站| 欧美日韩不卡视频| 国产精品国产三级国产aⅴ| 欧美日韩中文另类| 一区二区美女视频| 欧美猛男男办公室激情| 国产乱淫a∨片免费观看| 欧美日韩日日骚| 在线视频 91| 91精品国产福利在线观看| 99国产揄拍国产精品| 日韩视频一区二区| 乱精品一区字幕二区| 日韩理论片在线| 亚洲欧美日韩精品在线| 中文字幕a级片| 色综合天天综合色综合av| 黄色在线观看国产| 在线视频中文字幕一区二区| 亚洲视屏在线观看| 欧美高清视频一二三区 | 蜜臀av性久久久久蜜臀aⅴ| 艹b视频在线观看| 国产黑丝在线一区二区三区| 久久久久久久穴| 不卡大黄网站免费看| 国产呦小j女精品视频| 国产精品天天摸av网| 欧美老熟妇一区二区三区| 亚洲一线二线三线视频| 国产一级精品视频| 欧美日韩一区国产| www.天堂av.com| 日韩精品在线视频美女| 91九色在线porn| 欧美黑人巨大精品一区二区| 国产高潮在线| 国产精品亚洲综合天堂夜夜| 亚洲高清在线一区| 精品欧美国产| 97久久夜色精品国产| 成人午夜精品久久久久久久蜜臀| 久久不射网站| 中文字幕一区二区在线观看视频| 久久99精品国产麻豆婷婷| 在线播放第一页| 日本一区二区免费在线| 国产亚洲成人av| 欧美性xxxx极品高清hd直播| 一本色道久久综合亚洲| 日韩精品最新网址| xxxxx日韩| 久久久久久久久久久免费精品| a国产在线视频| 国产精品91久久久| 136福利精品导航| 日产精品一线二线三线芒果| 极品尤物久久久av免费看| 中文字幕永久视频| 99re6这里只有精品视频在线观看| 日本性高潮视频| 日韩毛片视频在线看| 日韩色图在线观看| 欧美电影免费提供在线观看| h视频网站在线观看| 午夜精品久久久99热福利| 国产精品va视频| 日本日本精品二区免费| 一区二区视频欧美| 91精品视频国产| 中文字幕第一区二区| 久久久久久久久久久影院| 精品成人私密视频| 日韩精品毛片| 国产精品678| 台湾色综合娱乐中文网| 免费高清一区二区三区| 国产一区二区三区在线观看免费视频 | 国产精品一区二区三区四区| 少妇人妻好深好紧精品无码| 午夜视频在线观看一区| 亚洲免费不卡视频| 日日狠狠久久偷偷四色综合免费 | 国产精品视频导航| 亚洲伊人春色| 噜噜噜久久亚洲精品国产品麻豆| 国产成人自拍高清视频在线免费播放| 欧美色图17p| 欧美日韩另类一区| 日本暖暖在线视频| 国产在线拍偷自揄拍精品| 日韩理论电影大全| 亚洲尤物视频网| 婷婷色综合网| 天天久久综合网| 亚洲人123区| 国产高清视频免费| 欧美劲爆第一页| 99ri日韩精品视频| 成人免费在线网| 成+人+亚洲+综合天堂| 黄色一级片免费看| 日韩大陆欧美高清视频区| 伊人久久在线| 日本公妇乱淫免费视频一区三区| 日韩制服丝袜av| 美女网站视频色| 欧美一级欧美三级| bl视频在线免费观看| 裸模一区二区三区免费| 视频在线在亚洲| 国产精品麻豆一区| 日韩精品一区二区三区中文精品| 女子免费在线观看视频www| 国产精华一区| 米奇777在线欧美播放| 香蕉久久久久久久| 欧美一区二区三区四区在线观看 | 色哦色哦哦色天天综合| yes4444视频在线观看| 亚洲jizzjizz日本少妇| 亚洲第一精品影视| 波多野吉衣中文字幕| 欧美色偷偷大香| av免费网站在线观看| 国产无套精品一区二区| 日韩精彩视频在线观看| 四虎影院中文字幕| 亚洲成成品网站| 经典三级一区二区| 久久99国产精品一区| av电影天堂一区二区在线| 超碰在线97观看| 精品中文字幕在线2019| 日韩电影在线观看完整免费观看| 牛夜精品久久久久久久| 一区二区三区欧美视频| 色视频免费在线观看| 成人久久久久久| 国产深夜精品| 人人澡人人澡人人看| 日韩高清人体午夜| 综合欧美精品| 国产网站免费在线观看| 亚洲男帅同性gay1069| 欧美色综合一区二区三区| 亚洲一区国产精品| 日韩高清在线不卡| 国产一级二级三级| 国产亚洲精品一区二555| 91夜夜蜜桃臀一区二区三区| 国产精品乱码久久久久| 亚洲风情在线资源站| 免费黄色在线观看|