<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          講講 Python Launcher 是什么鬼東西?

          共 7168字,需瀏覽 15分鐘

           ·

          2021-05-10 13:56

          點(diǎn)擊上方Python知識(shí)圈設(shè)為星標(biāo)

          回復(fù)100獲取100題PDF

          閱讀文本大概需要 5 分鐘


          你可能在他處見(jiàn)到過(guò)這鬼東西,when you install or uninstall python, and so on。那么你肯定與我一樣對(duì)這個(gè)鬼東西起了一絲興趣趣!


          1. 問(wèn)題所在

          由于Python2.x版本的腳本和Python3.x版本的腳本在語(yǔ)法上會(huì)有不兼容的情況。那么,必須使用不同的策略來(lái)允許【py】腳本使用基于腳本指定的Python解釋器版本來(lái)選擇合適的Python解釋器!這句話相當(dāng)?shù)霓挚?!說(shuō)人話,就是我有個(gè)test腳本需要Python2.x版本的解釋器來(lái)執(zhí)行。

          python test.py

          你如何確保執(zhí)行該腳本的解釋器版本就是我需要的解釋器!也就是,如何確定你就是我需要的那個(gè)姑娘!上面的“python”命令,是系統(tǒng)在PATH中找到的。而PATH中Python變量,有可能被我們手動(dòng)修改,拋開(kāi)這個(gè)不談,一般的,‘python’命令是調(diào)用Python3.x版本的解釋器。但這不完全可靠,因?yàn)楫?dāng)系統(tǒng)在PATH中找‘python’命令時(shí),如果Python2.x版本的在Python3.x的前面,那么, Python的默認(rèn)解釋器將變?yōu)?.x版本,因?yàn)橄到y(tǒng)找到一個(gè)就返回了(系統(tǒng)在Python2.x的安裝目錄中找到了python.exe)。想想你的Python解釋器的安裝目錄內(nèi)。不管是哪個(gè)版本都有這些:


          針對(duì)這個(gè)弊端,又有了另一個(gè)約定:

          ?python2將引用Python 2.x的某些版本?python3將引用Python 3.x的某些版本

          要了解更多的關(guān)于Python在‘python’命令方面的其他的約定,請(qǐng)參考PEP 394

          在 Linux 中

          在Linux中(基于Unix的系統(tǒng)中),通過(guò)軟連接的方式來(lái)綁定指定的Python解釋器。比如:

          這些軟連將不同的python命令指向一個(gè)實(shí)際位置的Python解釋器的啟動(dòng)目錄。而這些在哪用到呢,被【Shebang】用到了,也就是俗稱的文件頭(這里只聊shebang關(guān)于Python文件頭的部分)。通過(guò)文件頭系統(tǒng)就去軟連中找到對(duì)應(yīng)的那個(gè)‘python’命令,而該命令有綁定到一個(gè)具體的Python解釋器。

          #!/usr/bin/python2

          在 Windows 中

          上述問(wèn)題也存在與Windows系統(tǒng)中,那么我們也希望在Windows中和Unix中同樣運(yùn)行【Shebang】的能力,并且——沒(méi)有什么是又好使又不需要發(fā)明新的語(yǔ)法或者約定來(lái)描述更讓人愉快的事情了!經(jīng)過(guò)后來(lái)的完善,在PEP 397中正式出現(xiàn)并伴隨Python3.3版本發(fā)布。它叫【Python Launcher

          2. 解決問(wèn)題

          Python launcher是用于Windows中的一個(gè)實(shí)用程序,可幫助我們定位和執(zhí)行不同版本的Python解釋器。它允許腳本或者命令行指示特定的Python版本的首選項(xiàng),并將定位并執(zhí)行該版本。mmp,還是這么拗口!說(shuō)人話就是它很智能的區(qū)分開(kāi)是你想要手動(dòng)指定解釋版本執(zhí)行py腳本,還是想使用腳本文件指定的解釋器。你手動(dòng)的選擇Python解釋器,這是調(diào)用了你在【PATH】中的Python變量。舉個(gè)例子。你在Windows下的cmd中,使用Python3.7版本的解釋器,執(zhí)行一個(gè)文件:

          $ python3.7 test.py

          這么執(zhí)行發(fā)生了什么?Windows會(huì)在PATH中尋找python3.7這個(gè)解釋器。找到并執(zhí)行test.py文件。而這個(gè)test.py(你從未打開(kāi)過(guò)該文件)文件呢,其實(shí)它需要python2.7版本的解釋器來(lái)執(zhí)行。這樣是不是就有問(wèn)題了。我們用Python launcher來(lái)解決這個(gè)問(wèn)題,這玩意兒它會(huì)正確的選擇最合適的Python版本。

          如何安裝 Python launcher

          一般的,從3.3版本開(kāi)始,Python launcher會(huì)伴隨解釋器的安裝而可選安裝,在安裝步驟的可選項(xiàng)中可勾選。如本博客的第一個(gè)圖所示。它會(huì)被放在系統(tǒng)的PATH中(Python3.6版本開(kāi)始是這樣的,之前版本稍有變動(dòng),參見(jiàn)Python3.3版本新功能),如果你不手動(dòng)添加的話。

          另一種方式是單獨(dú)安裝。如本博客的第一個(gè)圖所示,你可以單獨(dú)勾選該項(xiàng)使之單獨(dú)安裝。在多個(gè)版本Python中,Python launcher只需安裝一次,并且兼容所有的Python版本。所以,如果在安裝3.6版本是,選擇Python launcher選項(xiàng),那么如果你在安裝3.7版本,該項(xiàng)則就無(wú)法選中,因?yàn)橐呀?jīng)安裝了。

          Python launcher有兩個(gè)版本,一個(gè)是控制臺(tái)程序,另一個(gè)是‘windows’(即GUI)程序。這兩個(gè)程序?qū)?yīng)我們Python安裝目錄中的‘python.exe’和‘pythonw.exe’這兩個(gè)可執(zhí)行文件。

          控制臺(tái)程序被命名為‘py.exe’,而windows程序則命名為‘pyw.exe’,并且pyw.exe將定位并執(zhí)行pythonw.exe。

          M:\>where pyC:\Windows\py.exe
          M:\>where pyw.exeC:\Windows\pyw.exe

          這里僅用控制臺(tái)程序舉例。

          如何使用 Python launcher?

          如果你安裝Python launcher,那么你可以在任意的目錄打開(kāi)cmd測(cè)試。


          默認(rèn)的,Python launcher打開(kāi)了你最新版本的解釋器??梢哉5氖褂煤屯顺?。而不是你最近安裝的某個(gè)版本的解釋器。

          如果你的系統(tǒng)環(huán)境中有多個(gè)版本的Python解釋器,那么,要想啟動(dòng),則可以這樣:


          當(dāng)然,Python launcher可以幫我們解決某些問(wèn)題。比如現(xiàn)在有個(gè)test.py文件,我們用Python launcher來(lái)啟動(dòng)。

          #! python2.7
          import sysprint(sys.version)
          # --------- 以上為文件內(nèi)容, 以下為執(zhí)行結(jié)果 --------------M:\>py test.py2.7.14(v2.7.14:84471935ed, Sep162017, 20:19:30) [MSC v.150032 bit (Intel)]

          可以看到,Python launcher根據(jù)文件頭自動(dòng)幫我們調(diào)用了指定版本的解釋器來(lái)執(zhí)行該文件。我們修改下文件頭再來(lái)測(cè)試。

          #! python3
          import sysprint(sys.version)
          # --------- 以上為文件內(nèi)容, 以下為執(zhí)行結(jié)果 --------------M:\>py test.py3.7.0(v3.7.0:1bf9cc5093, Jun272018, 04:06:47) [MSC v.191432 bit (Intel)]

          這樣,Python launcher幫我們找到我們想要的那個(gè)姑娘。再來(lái)看個(gè)沒(méi)有文件頭的。

          import sysprint(sys.version)
          # --------- 以上為文件內(nèi)容, 以下為執(zhí)行結(jié)果 --------------M:\>py test.py3.7.0(v3.7.0:1bf9cc5093, Jun272018, 04:06:47) [MSC v.191432 bit (Intel)]

          結(jié)果,Python launcher默認(rèn)使用最新版本的解釋器來(lái)執(zhí)行。我們也可以繞過(guò)文件頭,使用我們指定版本的Python解釋器。

          #! python2
          import sysprint(sys.version)
          # --------- 以上為文件內(nèi)容, 以下為執(zhí)行結(jié)果 --------------M:\>py -3 test.py3.7.0(v3.7.0:1bf9cc5093, Jun272018, 04:06:47) [MSC v.191432 bit (Intel)]
          M:\>py -3.5 test.py3.5.4(v3.5.4:3f56838, Aug82017, 02:07:06) [MSC v.190032 bit (Intel)]

          如上所示,我們還可以指定版本來(lái)執(zhí)行腳本。

          Python社區(qū)從多方面考慮下才有的Python launcher,方便我們?cè)趙indows下使用Python。如果現(xiàn)在的我們用不到它,只需大概知道是干嘛就行,不求甚解。

          以上為我個(gè)人對(duì)Python launcher的理解。如有錯(cuò)誤,還望斧正。

          參考閱讀

          ?https://docs.python.org/3/using/windows.html#launcher?https://www.python.org/dev/peps/pep-0397/


          作者:聽(tīng)雨危樓 

          鏈接:https://www.cnblogs.com/Neeo/p/8393805.html


          PS:我自己建了一個(gè)每天可領(lǐng)外賣優(yōu)惠券的號(hào),經(jīng)常領(lǐng)到15元的無(wú)門檻券,不花冤枉錢~
          加微信送《Python知識(shí)點(diǎn)100題PDF》

          pk哥個(gè)人微信


          添加pk哥個(gè)人微信即送Python資料


          Python知識(shí)點(diǎn)100題的PDF

          Python相關(guān)的電子書10本


          記得備注:“100題”

             
                  



          往期推薦
          01

          公眾號(hào)所有文章匯總導(dǎo)航(2-10更新)

          02

          永久白嫖!新發(fā)現(xiàn)的外賣漏洞??!請(qǐng)低調(diào)使用

          03

          求你了,別再用 pip 那烏龜?shù)乃俣热グ惭b庫(kù)了!


          點(diǎn)擊閱讀原文查看pk哥原創(chuàng)視頻

          我就知道你“在看”

          瀏覽 45
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  成人特级毛片69免费观看 | 日韩成人中文字幕 | 操一操鲁一鲁 | 亚洲综合网狼人综合 | 青草青青青在线免费观看视频 |