久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

    1. <style id="76ofp"></style>

      <style id="76ofp"></style>
      <rt id="76ofp"></rt>
      <form id="76ofp"><optgroup id="76ofp"></optgroup></form>
      1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構

        手機站
        千鋒教育

        千鋒學習站 | 隨時隨地免費學

        千鋒教育

        掃一掃進入千鋒手機站

        領取全套視頻
        千鋒教育

        關注千鋒學習站小程序
        隨時隨地免費學習課程

        當前位置:首頁  >  技術干貨  > python模塊搜索路徑

        python模塊搜索路徑

        來源:千鋒教育
        發(fā)布人:xqq
        時間: 2023-11-07 14:20:46 1699338046

        在a.py中導入模塊b的時候,python會做一系列的模塊文件路徑搜索操作:b.py在哪里?只有找到它才能讀取、運行(裝載)該模塊。

        在任何一個python程序啟動時,都會將模塊的搜索路徑收集到sys模塊的path屬性中(sys.path)。當python需要搜索模塊文件在何處時,首先搜索內(nèi)置模塊,如果不是內(nèi)置模塊,則搜索sys.path中的路徑列表,搜索時會從該屬性列出的路徑中按照從前向后的順序進行搜索,并且只要找到就立即停止搜索該模塊文件(也就是說不會后搜索的同名模塊覆蓋先搜索的同名模塊)。

        例如,在a.py文件中輸出一下這個屬性的內(nèi)容:

        #a.py:

        importsys

        print(sys.path)

        結果:

        ['G:\\pycode','C:\\ProgramFiles(x86)\\Python36-32\\python36.zip','C:\\ProgramFiles(x86)\\Python36-32\\DLLs','C:\\ProgramFiles(x86)\\Python36-32\\lib','C:\\ProgramFiles(x86)\\Python36-32','C:\\Users\\malong\\AppData\\Roaming\\Python\\Python36\\site-packages','C:\\ProgramFiles(x86)\\Python36-32\\lib\\site-packages']

        python模塊的搜索路徑包括幾個方面,按照如下順序搜索:

        程序文件(a.py)所在目錄,即G:\\pycode

        環(huán)境變量PYTHONPATH所設置的路徑(如果定義了該環(huán)境變量,則從左向右的順序搜索)

        標準庫路徑

        .pth文件中定義的路徑

        需要注意,上面sys.path的結果中,除了.zip是一個文件外,其它的搜索路徑全都是目錄,也就是從這些目錄中搜索模塊X的文件X.py是否存在。

        程序所在目錄

        這個目錄是最先搜索的,且是python自動搜索的,無需對此進行任何設置。從交互式python程序終輸出sys.path的結果:

        >>>sys.path

        ['','C:\\WINDOWS\\system32','C:\\ProgramFiles(x86)\\Python36-32\\Lib\\idlelib','C:\\ProgramFiles(x86)\\Python36-32\\python36.zip','C:\\ProgramFiles(x86)\\Python36-32\\DLLs','C:\\ProgramFiles(x86)\\Python36-32\\lib','C:\\ProgramFiles(x86)\\Python36-32','C:\\Users\\malong\\AppData\\Roaming\\Python\\Python36\\site-packages','C:\\ProgramFiles(x86)\\Python36-32\\lib\\site-packages']

        其中第一個''表示的就是程序所在目錄。

        注意程序所在目錄和當前目錄是不同的。例如,在/tmp/目錄下執(zhí)行/pycode中的a.py文件

        cd/tmp

        python/pycode/a.py

        其中/tmp為當前目錄,而/pycode是程序文件a.py所在的目錄。如果a.py中導入b.py,那么將首先搜索/pycode,而不是/tmp。

        環(huán)境變量PYTHONPATH

        這個變量中可以自定義一系列的模塊搜索路徑列表,這樣可以跨目錄搜索(另一種方式是設置.pth文件)。但默認情況下這個環(huán)境變量是未設置的。

        在windows下,設置PYTHONPATH環(huán)境變量的方式:命令行中輸入:SystemPropertiesAdvanced-->環(huán)境變量-->系統(tǒng)環(huán)境變量新建

        如果是多個路徑,則使用英文格式的分號分隔。以下是臨時設置當前命令行窗口的PYTHONPATH:

        setPYTHONPATH='D:\pypath;d:\pypath1'

        在unix下,設置PYTHONPATH環(huán)境變量的方式,使用冒號分隔多個路徑:另外,必須得export導出為環(huán)境變量

        exportPYTHONPATH=/tmp/pypath1:/tmp/pypath2

        如果要永久生效,則寫入配置文件中:

        echo'exportPYTHONPATH=/tmp/pypath1:/tmp/pypath2'>/etc/profile.d/pypth.sh

        chmod+x/etc/profile.d/pypth.sh

        source/etc/profile.d/pypth.sh

        標準庫路徑

        在Linux下,標準庫的路徑一般是在/usr/lib/pythonXXX/下(XXX表示python版本號),此目錄下有些分了子目錄。

        例如:

        ['','/usr/lib/python35.zip','/usr/lib/python3.5','/usr/lib/python3.5/plat-x86_64-linux-gnu','/usr/lib/python3.5/lib-dynload','/usr/local/lib/python3.5/dist-packages','/usr/lib/python3/dist-packages']

        其中/usr/lib/python3.5和其內(nèi)的幾個子目錄都是標準庫的搜索路徑。

        注意其中/usr/lib/python35.zip,它是ZIP文件組件,當定義此文件為搜索路徑時,將自動解壓縮該文件,并從此文件中搜索模塊。

        Windows下根據(jù)python安裝位置的不同,標準庫的路徑不同。如果以默認路徑方式安裝的python,則標準庫路徑為C:\\ProgramFiles(x86)\\Python36-32及其分類的子目錄。

        .pth文件自定義路徑

        可以將自定義的搜索路徑放進一個.pth文件中,每行一個搜索路徑。然后將.pth文件放在python安裝目錄或某個標準庫路徑內(nèi)的sitepackages目錄下即可。

        這是一種替換PYTHONPATH的友好方式,因為不同操作系統(tǒng)設置環(huán)境變量的方式不一樣,而以文件的方式記錄是所有操作系統(tǒng)都通用的。

        例如,windows下,在python安裝目錄C:\\ProgramFiles(x86)\\Python36-32下新增一個mypath.pth文件,內(nèi)容如下:

        d:\pypath1

        d:\pypath2

        再去輸出sys.path,將可以看到這兩個路徑已經(jīng)放進了搜索列表中。

        修改搜索路徑

        除了上面環(huán)境變量和.pth文件,還可以直接修改sys.path或者site.getsitepackages()的結果。

        例如,在import導入sys模塊之后,可以修改sys.path,向這個列表中添加其它搜索路徑,這樣之后導入其它模塊的時候,也會搜索該路徑。

        例如:

        importsys

        sys.path.append('d:\\pypath3')

        print(sys.path)

        sys.path的最后一項將是新添加的路徑。

        以上內(nèi)容為大家介紹了python模塊搜索路徑,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。

        tags: python培訓
        聲明:本站稿件版權均屬千鋒教育所有,未經(jīng)許可不得擅自轉載。
        10年以上業(yè)內(nèi)強師集結,手把手帶你蛻變精英
        請您保持通訊暢通,專屬學習老師24小時內(nèi)將與您1V1溝通
        免費領取
        今日已有369人領取成功
        劉同學 138****2860 剛剛成功領取
        王同學 131****2015 剛剛成功領取
        張同學 133****4652 剛剛成功領取
        李同學 135****8607 剛剛成功領取
        楊同學 132****5667 剛剛成功領取
        岳同學 134****6652 剛剛成功領取
        梁同學 157****2950 剛剛成功領取
        劉同學 189****1015 剛剛成功領取
        張同學 155****4678 剛剛成功領取
        鄒同學 139****2907 剛剛成功領取
        董同學 138****2867 剛剛成功領取
        周同學 136****3602 剛剛成功領取
        相關推薦HOT
        列舉python常見的內(nèi)置函數(shù)

        abs()返回數(shù)字的絕對值map根據(jù)函數(shù)對指定序列做映射map()函數(shù)接收兩個參數(shù),一個是函數(shù),一個是可迭代對象,map將傳入的函數(shù)依次作用到序列的每...詳情>>

        2023-11-07 17:02:46
        python內(nèi)置函數(shù):map、reduce、filter的用法和區(qū)別

        map:根據(jù)函數(shù)對指定序列做映射map參數(shù)接收兩個參數(shù):一個是函數(shù),一個是序列(可迭代對象)返回值Python2返回列表python3返回迭代器#例子:#abs()...詳情>>

        2023-11-07 16:59:10
        python虛擬環(huán)境工具virtualenv

        virtualenv是一個創(chuàng)建隔絕的Python環(huán)境的工具。virtualenv創(chuàng)建一個包含所有必要的可執(zhí)行文件的文件夾,用來使用Python工程所需的包。安裝pipins...詳情>>

        2023-11-07 16:30:22
        python函數(shù)調(diào)用和參數(shù)傳遞

        定義過函數(shù)后,就可以在后面程序中使用這一函數(shù)printsquare_sum(3,4)python通過位置,知道3對應的是函數(shù)定義中的第一個參數(shù)a,4對應第二個參數(shù)b...詳情>>

        2023-11-07 16:19:34
        python字節(jié)碼和機器碼的區(qū)別

        機器碼,學名機器語言指令,有時也被稱為原生碼,是電腦的CPU可直接解讀的數(shù)據(jù)。字節(jié)碼是一種中間狀態(tài)(中間碼)的二進制代碼(文件)。需要直譯器...詳情>>

        2023-11-07 16:05:10
        岳阳县| 泰安市| 宁国市| 民权县| 商都县| 怀远县| 花莲县| 耒阳市| 滦南县| 滨海县| 湘阴县| 鹤岗市| 南京市| 安阳市| 固安县| 万州区| 屏山县| 马鞍山市| 塔河县| 宜章县| 疏附县| 抚宁县| 县级市| 前郭尔| 鄂托克前旗| 砀山县| 杭锦后旗| 华亭县| 普定县| 当阳市| 伊宁市| 元谋县| 巴林左旗| 达州市| 辽源市| 慈利县| 云梦县| 广水市| 垦利县| 梧州市| 丹东市|