<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>

          Win 10 中使用 Python 碰到的奇怪現(xiàn)象

          共 2225字,需瀏覽 5分鐘

           ·

          2021-06-19 23:20

          作者:流光飛舞     來源:

          https://shuhari.dev/blog/2019/11/win10-store-python

          最近在使用 Python 的時候發(fā)生了很奇怪的現(xiàn)象:從命令行執(zhí)行 python.exe 并不會進入 REPL,似乎也沒有其他反應,然而稍等片刻,會看到系統(tǒng)彈出 Windows Store 頁面,并定位到 Python App 的詳情頁。
          這個現(xiàn)象讓我很是迷惑了一下,還以為是 Python 運行環(huán)境出了什么狀況,但很快反應過來,從現(xiàn)象看,應該是 Windows 搞的鬼。
          檢查一下路徑是否正常,果然:
          \$ where python
          C:\\Users\\yuhao\\AppData\\Local\\Microsoft\\WindowsApps\\python.exe
          原理是系統(tǒng)自己搞了一個 Python.exe。如果從在資源管理器打開上述目錄的話,會看到這里只有孤零零的幾個 .exe 文件,且圖標也不正常,并不是一個真正的、完整的 Python 運行環(huán)境。
          那么問題來了,Windows 搞這些沒有實際環(huán)境的 .exe 出來,用意何在?
          從網(wǎng)上找到一些信息,原來從 Windows 10 2019 五月更新以來,微軟試圖把 Python 帶到 Windows,至于具體做法,則是把 Python3 放到了自家的商店里面。而上面看到的 python.exe 是一個“假的” Python,它的唯一作用在于當系統(tǒng)沒有找到 Python 的時候,自動跳轉(zhuǎn)到微軟商店去讓我們下載。
          以下是微軟團隊給出的說法:Who put Python in the Windows 10 May 2019 Update?
          可能是擔心這個新的功能導致一些兼容性方面的結(jié)果,微軟又在系統(tǒng)設置里面添加了一個比較隱晦的功能。比起在層層疊疊的設置界面里找到它,更簡單的方法是直接輸入 app exec
          這樣會打開設置的“應用程序別名”界面。這里我們會看到系統(tǒng)認為 python.exepython3.exe 都只是安裝程序的別稱,不過我們也可以選擇把它們關(guān)閉。這樣當我們再運行 python 的時候,就會顯示“找不到程序”的標準提示。實際上,Windows 是把上述 .exe 文件偷偷備份到其他地方了。
          很多程序員(包括我)很可能都是按照標準的方式從官方下載安裝 Python 執(zhí)行文件。如果在安裝過程中選擇了“添加到系統(tǒng)環(huán)境變量”的話,那么標準 Python 會注冊到系統(tǒng) PATH 變量,而前面所述的 WindowsApps 目錄則是 Windows 添加到用戶 PATH 變量的。按照 Windows 系統(tǒng)的規(guī)則,PATH 環(huán)境變量是系統(tǒng)設置先于用戶設置,所以如果安裝了標準版 Python 的話,系統(tǒng)應該首先找到的是它,而不是應用商店版的 Python。后來我發(fā)現(xiàn),之所以我的機器會出現(xiàn)上述問題,是因為系統(tǒng)設置有一點語法錯誤,修正以后再次測試,結(jié)果就正常了。
          到此,我們已經(jīng)理解了 Windows 自帶的 Python 是怎么回事。微軟這樣做的初衷,應該是希望普通用戶能更方便地用上 Python,這個想法無可厚非,但放到 Windows 應用商店這個設計思路是否合理,我還是有一些懷疑的。畢竟微軟應用商店一直以來名聲并不算太好,內(nèi)容少、功能欠缺、速度慢,時不時發(fā)生一些惱人的小問題(比如 不知所云的 0x8000xxxx 錯誤)。而“應用程序別名”這個功能到底是解決了問題還是帶來更多的困惑,我也持保留意見。
          當我在網(wǎng)上查找關(guān)于該問題的信息時,也發(fā)現(xiàn)有其他用戶同樣受到該問題的困擾,比如:
          • [Bug] Don't find python library from WindowsApps dir
          • Microsoft Store installed python (3.7 - Windows 10) based virtualenvs cannot access pyd DLLs

          目前,在 Windows 上面安裝 Python 已經(jīng)有很多不同的方式:

          • 通過官方網(wǎng)站下載安裝;
          • 通過 Anaconda 集成軟件包;
          • Visual Studio 一起安裝;
          • 通過 chocolatey 之類的第三方包管理;
          • 通過 WSL 安裝 Linux 版 Python;
          • 通過 Windows Store 安裝;
          說實話,我認為太多不同的來源渠道會讓環(huán)境問題變得更復雜,增加出錯的可能,并且容易迷惑初學者。對于大多數(shù)程序員來說,建議大家還是按照最基本的方式,從官方下載并安裝 Python。


          - EOF -


          回復關(guān)鍵字“簡明python ”,立即獲取入門必備書籍簡明python教程》電子版

          回復關(guān)鍵字爬蟲”,立即獲取爬蟲學習資料

          推薦閱讀:

          瀏覽 57
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <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>
                  北条麻纪无码中文字幕 | 中文字幕免费视频 | 午夜肏屄 | 国产精品乱码一区二区三区视频 | 日韩欧美内射 |