日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

詳解Python中的路徑問題

瀏覽:2日期:2022-07-12 15:22:14

1. 絕對路徑引入

Python 在搜索模塊時,依次搜索sys.path里的位置,直到找到模塊為止。下面命令可以查看當前的搜索路徑:

import sysprint(sys.path)

sys.path的初始值來源于兩個(其實還有一些更復雜但不常用的)。一個是系統的PYTHONPATH變量,因此可通過設置該變量,來設置 Python 默認的搜索位置。比如:

export PYTHONPATH=/opt/python:$PYTHONPATHecho $PYTHONPATH

將該命令放在系統初始化腳本(/etc/environment)或者 BASH 初始化腳本(/~/.bashrc)里,可以對每個新開的窗口有效。

sys.path的另一個來源是當前執行程序所在的目錄 (而不是當前目錄)。比如當前目錄下文件夾./cc下有一個b.py,那么執行./cc/b.py時,./cc(而不是./!)將被加到sys.path:

python ./cc/b.py

2. 相對路徑引用

上面說的是搜索模塊都是指絕對路徑引用。對于非系統目錄,就需要操縱sys.path。但操縱sys.path有外溢效果,因為它是一個全局變量。對于同一個庫里的模塊的互相引用,可以考慮使用相對路徑:

from . import abcfrom .abc import foolfrom ..up import foo

但相對路徑有兩個很惡心的問題,使得用法極為受限。其中一個是:

Note that both explicit and implicit relative imports are based on the name of the current module. Since the name of the main module is always __main__, modules intended for use as the main module of a Python application should always use absolute imports.

包含相對路徑 import 的 python 腳本不能直接運行,只能作為 module 被引用。原因正如手冊中描述的,所謂相對路徑其實就是相對于當前 module 的路徑,但如果直接執行腳本,這個 module 的 name 就是__main__, 而不是 module 原來的 name , 這樣相對路徑也就不是原來的相對路徑了,導入就會失敗。

在使用相對引用的文件中,不能有 __main__ 方法,只執行作為一個 module 進行引用,而不是直接執行腳本。

舉個簡單例子。假設./cc/目錄下已有一個./cc/b.py(內容為空)。當前目錄下的./a.py內容為:

from .cc import b

那么直接運行python ./a.py將會報錯:

ModuleNotFoundError: No module named ’__main__.cc’; ’__main__’ is not a package

另一個是常見的錯誤是: ValueError: attempted relative import beyond top-level package。

在涉及到相對導入時,package所對應的文件夾必須正確的被python解釋器視作package,而不是普通文件夾。否則由于不被視作package,無法利用package之間的嵌套關系實現python中包的相對導入。

文件夾被python解釋器視作package需要滿足兩個條件:

1、文件夾中必須有__init__.py文件,該文件可以為空,但必須存在該文件。

2、不能作為頂層模塊來執行該文件夾中的py文件(即不能作為主函數的入口)。

補充:在'from YY import XX'這樣的代碼中,無論是XX還是YY,只要被python解釋器視作package,就會首先調用該package的__init__.py文件。如果都是package,則調用順序是YY,XX。

另外,練習中“from . import XXX”和“from .. import XXX”中的’.’和’..’,可以等同于linux里的shell中’.’和’..’的作用,表示當前工作目錄的package和上一級的package。

舉個例子:

testIm/--__init__.py--main.py : from Tom import tom--Tom/--__init__.py : print('I’m Tom’s __init__!')--tom.py : from . import tomBrother, from .. import kate,print('I’m Tom!')--tomBrother.py print(I’m Tom’s Brother!)--Kate/--__init__.py : print('I’m Kate’s __init__!')--kate.py

運行文件:main.py

結果:

I’m Tom’s __init__!I’m Tom’s Brother!Traceback (most recent call last):File 'D:PythonLearningTestImmain.py', line 3, in <module>from Tom import tomFile 'D:PythonLearningTestImKatekate.py', line 4, in <module>from .. import kateValueError: attempted relative import beyond top-level package>>>

可以看到from . import tomBrother順利執行,首先執行了Tom文件夾下的__init__.py文件,后來執行了tomBrother.py文件,但是當執行到“from .. import kate”時報錯,這是因為我們是在TestIm文件夾下把main.py文件作為主函數的入口執行的,因此盡管TestIm文件夾中有__init__.py文件,但是該文件夾不能被python解釋器視作package,即Tom package不存在上層packge,自然會報錯,相對導入時超出了最高層級的package。

修改方法:

test/--main.py : from testIm.Tom import tom--testIm/--__init__.py--Tom/--__init__.py : print('I’m Tom’s __init__!')--tom.py : from . import tomBrother, from .. import Kate,print('I’m Tom!')--tomBrother.py print(I’m Tom’s Brother!)--Kate/--__init__.py : print('I’m Kate’s __init__!')--kate.py

運行文件:main.py

結果:

I’m top’s __init__!I’m Tom’s __init__!I’m Tom’s Brother!!I’m Kate’s __init__!I’m Tom!

即主函數入口不在TestIm中,則TestIm和其同樣包含__init__.py文件的子文件夾都被python解釋器視作package,形成相應的嵌套關系??梢哉J褂胒rom . import XXX和from .. import XXX。

以上就是詳解Python中的路徑問題的詳細內容,更多關于Python 路徑的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品久久久久久久免费软件| 日韩精品看片| 免费高清在线一区| 久久久久午夜电影| 色婷婷久久久| 午夜久久美女| 影音先锋久久精品| 日本成人精品| 国产欧美一区二区精品久久久| 欧美一区在线观看视频| 国产欧美一区二区三区国产幕精品 | 99久久精品费精品国产| 欧洲av一区二区| 91成人超碰| 欧美在线资源| 亚洲视频电影在线| 国产精品一级| 97精品视频在线看| 久久亚洲在线| 综合亚洲自拍| 国产黄色精品| 五月激情久久| 国产亚洲一区在线| 日韩国产欧美视频| 国产福利91精品一区二区| 成人精品中文字幕| 免费人成网站在线观看欧美高清| 日韩精品a在线观看91| 国模精品一区| 极品裸体白嫩激情啪啪国产精品| 亚洲视频电影在线| 久久国产视频网| 中文字幕高清在线播放| 蜜桃tv一区二区三区| 日本欧美在线看| 国产精品视频一区二区三区| 麻豆成人av在线| 亚洲国产日韩欧美在线| 日本vs亚洲vs韩国一区三区二区| 久久97久久97精品免视看秋霞| 成人久久一区| 日韩欧美中文字幕在线视频| 福利一区和二区| 丝袜美腿亚洲色图| 国产另类在线| 国内精品福利| 欧美欧美黄在线二区| 日韩黄色大片网站| 日韩中文字幕区一区有砖一区| 欧美激情视频一区二区三区在线播放| 日韩欧美网址| 日韩精品三区四区| zzzwww在线看片免费| 久久午夜精品一区二区| 久久精品色播| 日本欧洲一区二区| 国产伦久视频在线观看| 日本在线不卡视频一二三区| 麻豆视频在线观看免费网站黄 | 亚洲午夜电影| 国产精品香蕉| 久久av在线| 日韩中文字幕高清在线观看| 清纯唯美亚洲综合一区| 久久亚洲在线| 国产精品igao视频网网址不卡日韩 | 久久精品亚洲| 石原莉奈在线亚洲二区| 国产99在线| 国产精品亚洲片在线播放| 亚洲中午字幕| 成人日韩在线观看| 国产精品极品国产中出| 日韩午夜精品| 日韩免费福利视频| 美腿丝袜亚洲三区| 亚洲精品中文字幕99999| 秋霞国产精品| 久久wwww| 日韩精品三级| 久热精品在线| 日韩欧美在线中字| 麻豆视频久久| 日韩精品高清不卡| 噜噜噜久久亚洲精品国产品小说| av免费不卡国产观看| 国产精品巨作av| 在线精品亚洲| 亚洲一区久久| 欧美亚洲在线日韩| 久久av日韩| 亚洲精品一二| 亚洲在线国产日韩欧美| 亚洲网站视频| 午夜精品久久久久久久久久蜜桃| 日本不卡视频在线观看| 欧美在线亚洲| 99热国内精品| 免费高潮视频95在线观看网站| 欧美成a人片免费观看久久五月天| 日韩国产在线不卡视频| 男女激情视频一区| 99国产精品久久久久久久成人热| 欧美精品资源| 日韩欧美另类一区二区| 国产一区二区三区久久久久久久久| 欧美日韩亚洲国产精品| 亚洲精品激情| 亚洲丝袜美腿一区| 视频一区二区三区入口| 亚洲激精日韩激精欧美精品| 91看片一区| 欧美成人基地 | 国产精品白丝一区二区三区| 日韩三级精品| 日韩不卡免费视频| 日韩二区三区在线观看| 亚洲天堂日韩在线| 日韩精品一二三四| 免费久久精品视频| 亚洲一区欧美激情| 日韩中文欧美在线| 亚洲区第一页| 亚洲一区日韩| 中文字幕一区二区av| 中文字幕av一区二区三区人| 色婷婷狠狠五月综合天色拍| 色综合www| 欧美日韩视频| 亚洲一二三区视频| 久久激五月天综合精品| 免费看久久久| a日韩av网址| 91九色精品| 午夜在线视频观看日韩17c| 视频在线在亚洲| 日韩精品免费视频一区二区三区| 亚洲精品成人一区| 欧美午夜三级| 成人台湾亚洲精品一区二区| 欧洲亚洲一区二区三区| 狠狠干综合网| 日韩一区二区三区高清在线观看| 国产欧美激情| 国产精品13p| 久久精品国产www456c0m| 日韩午夜免费| 91亚洲无吗| 精品美女在线视频| 久久精品国产68国产精品亚洲| 在线亚洲自拍| 日韩精品一二区| 国产精品毛片久久久| 精品免费视频| 欧美a级片一区| 中文一区一区三区免费在线观| 国产精品s色| 亚洲天堂久久| 欧美日韩va| 精精国产xxxx视频在线野外| 日韩中文字幕区一区有砖一区| 国产欧美一级| 久久人人99| 日韩国产在线一| 日本а中文在线天堂| 国产亚洲毛片在线| 国产精品一在线观看| 久久影院一区二区三区| 中文字幕在线高清| 久久久久99| 亚洲天堂免费| 国产精品伦理久久久久久| 在线视频精品| 国产欧美精品久久| 99久久九九| 久久精品xxxxx| 欧美va天堂在线| 国产欧美日韩在线观看视频| 99久久久久久中文字幕一区| 日韩高清不卡一区| 日本免费久久| 日韩超碰人人爽人人做人人添| 日韩成人精品一区二区| 久久免费黄色| 日韩精品亚洲一区二区三区免费| 伊伊综合在线| 亚洲精品人人| 成人台湾亚洲精品一区二区| 在线观看亚洲精品福利片| 91亚洲国产高清| 免播放器亚洲一区| 欧美久久天堂| 国产精品一区二区中文字幕| 亚洲激情二区| 捆绑调教日本一区二区三区| 日韩精品一区二区三区中文在线| 亚洲a在线视频| 麻豆精品国产91久久久久久| 黑丝一区二区三区| 国产一区丝袜|