解決windows下命令行執(zhí)行python3失效,會(huì)打開(kāi)應(yīng)用商店問(wèn)題
之前一直用pycharm開(kāi)發(fā),調(diào)試也在linux下比較多,最近試了試了vscode+conda在windows下開(kāi)發(fā),遇到了幾個(gè)比較坑的問(wèn)題,記錄一下。
一、問(wèn)題描述
剛開(kāi)始用vscode開(kāi)發(fā),寫(xiě)了一個(gè)簡(jiǎn)單的web程序,成功run起來(lái)了,因?yàn)関scode不能像pycharm一樣在一個(gè)項(xiàng)目中同時(shí)執(zhí)行兩個(gè)py文件(也可能需要什么插件?),所以在vscode的終端powershell執(zhí)行了一個(gè)簡(jiǎn)單的測(cè)試腳本來(lái)測(cè)試,但是居然沒(méi)有任何反應(yīng)???好像沒(méi)執(zhí)行一樣。
python3 test.py
二、問(wèn)題原因
開(kāi)始猜測(cè)是vscode問(wèn)題,windows單獨(dú)打開(kāi)powershell,執(zhí)行python3 test.py,還是不行。
把web程序停了,單獨(dú)使用vscode右鍵run python file in terminal,執(zhí)行成功了。。。。
然后我對(duì)比了一下執(zhí)行的命令有何不同
# vscode里執(zhí)行的命令 F:/*路徑*/python.exe d:/*路徑*/test.py # 我執(zhí)行的命令 python3 test.py
一個(gè)是python,一個(gè)是python3, 是windows系統(tǒng)中python3和python指向的不是一個(gè)?
在powershell中測(cè)試,執(zhí)行python命令,成功進(jìn)入了我們的conda python環(huán)境。
執(zhí)行python3,打開(kāi)了windows應(yīng)用商店????
三、解決方案
其實(shí)找到問(wèn)題后,只要以后執(zhí)行只用python, 不用python3就可以了,但是因?yàn)檫€是想搞明白問(wèn)題原因,于是繼續(xù)研究了一下。
1、刪除、調(diào)整環(huán)境變量順序(沒(méi)用)
百度查找了一下,有人說(shuō)是因?yàn)閣indows應(yīng)用商店的環(huán)境變量排在我們的python環(huán)境變量之前,于是修改系統(tǒng)環(huán)境變量,將應(yīng)用商店的環(huán)境變量下移到最后:
保存重啟,再次測(cè)試,沒(méi)有成功。。。
那直接刪了windows的應(yīng)用商店,再次測(cè)試,直接報(bào)錯(cuò)沒(méi)有python3了???
2、解決方案一:復(fù)制poython可執(zhí)行文件并重命名
這時(shí)意識(shí)到了可能是windows下的python可能和linux下不同,默認(rèn)可能沒(méi)有python3
打開(kāi)powershell,使用如下命令查看環(huán)境變量(注意$不能?。?$env:Path -split ";"
(env_name) PS C:\Users\user> $env:Path -split ";"
F:\Users\user\anaconda3\envs\env_name
F:\Users\user\anaconda3\envs\env_name\Library\mingw-w64\bin
F:\Users\user\anaconda3\envs\env_name\Library\usr\bin
F:\Users\user\anaconda3\envs\env_name\Library\bin
F:\Users\user\anaconda3\envs\env_name\Scripts
F:\Users\user\anaconda3\envs\env_name\bin
F:\Users\user\anaconda3\condabin
C:\Windows\system32
C:\Windows
C:\Windows\System32\Wbem
C:\Windows\System32\WindowsPowerShell\v1.0
C:\Program Files\dotnet
C:\WINDOWS\system32
C:\Program Files\PowerShell\7
C:\Users\user\AppData\Local\Programs\Python\Python36\Scripts
C:\Users\user\AppData\Local\Programs\Python\Python36
.
找到第一個(gè)python環(huán)境變量目錄,打開(kāi)查看,果然沒(méi)有python3
將python.exe和pythonw.exe各復(fù)制一份,命名為python3.exe和pythonw3.exe, 然后就可以使用python3了。
3、解決方案二:powershell給python起別名python3
重命名的方法確實(shí)可以解決問(wèn)題,但是我有很多個(gè)虛擬環(huán)境,以后每次創(chuàng)建新的虛擬環(huán)境都需要復(fù)制一遍,太麻煩了。
我想應(yīng)該有什么方式讓python3直接指向python, 就像在linux下查看目錄的詳細(xì)信息命令 ll 等于 ls -l 一樣。
又研究了一下,powershell給命令配置別名。
# 先檢查是否存在別名python3,這是一個(gè)新的別名,所以沒(méi)有任何輸出。 $Alias:python3 # 為python命令創(chuàng)建別名 Set-Alias python3 python.exe # 查此別名是否成功創(chuàng)建 $Alias:python3 # 注意:這種方式的別名不是永久的。關(guān)閉PowerShell后,就沒(méi)有了。
這樣可以臨時(shí)修改,要想永久修改,需要更改powershell的配置文件(相當(dāng)于修改linux下的 .bashrc 文件)。
首先在powershell里輸入$profile,查看profile文件的位置,然后打開(kāi),加入
set-alias python3 python.exe 即可
(base) PS C:\Users\user> $profile
C:\Users\user\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
#region conda initialize # !! Contents within this block are managed by 'conda init' !! (& "F:\Users\user\anaconda3\Scripts\conda.exe" "shell.powershell" "hook") | Out-String | Invoke-Expression #endregion set-alias python3 python.exe
修改完成后重啟終端,就可以了。
四、其他的坑
當(dāng)修改完后,果然windows下的終端可以正常使用python3了,但是當(dāng)我在vscode的終端里執(zhí)行python3的時(shí)候,又給我打開(kāi)了windows應(yīng)用商店 --。--?。?!
在vscode的終端查看配置文件,發(fā)現(xiàn)我沒(méi)有修改,但是windows默認(rèn)的powershell中能用。
仔細(xì)查看對(duì)比了一下,兩個(gè)powershell的配置文件路徑不一樣?。?/p>
它們?cè)诓煌哪夸?,一個(gè)叫PowerShell,另一個(gè)叫WindowsPowerShell。
版本也不一樣,一個(gè)是powershell5, 一個(gè)是powershell7。
使用如下命令查看powershell版本
$PSVersionTable.PSVersion
powershell5和powershell7的區(qū)別,可以參考:Windows PowerShell 5.1 與 PowerShell 7.x 之間的差異 - PowerShell | Microsoft Learn
將兩個(gè)的配置文件都修改了,vscode下終端也能用python3了。
總結(jié)
至此,折騰了半天,終于解決了問(wèn)題。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python抓取通過(guò)Ajax加載數(shù)據(jù)的示例
在網(wǎng)頁(yè)上,有一些內(nèi)容是通過(guò)執(zhí)行Ajax請(qǐng)求動(dòng)態(tài)加載數(shù)據(jù)渲染出來(lái)的,本文主要介紹了使用Python抓取通過(guò)Ajax加載數(shù)據(jù),感興趣的可以了解一下2023-05-05Python的pywifi無(wú)線網(wǎng)絡(luò)庫(kù)的具體使用
pywifi是一個(gè)基于Python的用于操作無(wú)線網(wǎng)絡(luò)的庫(kù),本文就來(lái)介紹一下pywifi的安裝及實(shí)際應(yīng)用場(chǎng)景使用,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02pampy超強(qiáng)的模式匹配工具的實(shí)現(xiàn)
在自然語(yǔ)言處理界,模式匹配可以說(shuō)是最常用的技術(shù)。甚至可以說(shuō),將NLP技術(shù)作為真實(shí)生產(chǎn)力的項(xiàng)目都少不了模式匹配。本文就介紹了pampy超強(qiáng)的模式匹配工具的實(shí)現(xiàn),感興趣的可以了解一下2021-07-07python 將字符串轉(zhuǎn)換成字典dict的各種方式總結(jié)
下面小編就為大家分享一篇python 將字符串轉(zhuǎn)換成字典dict的各種方式總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-03-03Python虛擬環(huán)境venv實(shí)戰(zhàn)過(guò)程詳解
Python的虛擬環(huán)境可以幫助我們?cè)谕慌_(tái)機(jī)器上,同時(shí)使用不同的Python版本和庫(kù),方便管理和開(kāi)發(fā),下面這篇文章主要給大家介紹了關(guān)于Python虛擬環(huán)境venv的相關(guān)資料,需要的朋友可以參考下2023-06-06python 實(shí)現(xiàn)mysql增刪查改示例代碼
python中可以通過(guò)pymysql實(shí)現(xiàn)MySQL數(shù)據(jù)庫(kù)的連接,并實(shí)現(xiàn)數(shù)據(jù)庫(kù)的各種操作,這篇文章主要給大家介紹了關(guān)于pymsql實(shí)現(xiàn)增刪改查的示例代碼,需要的朋友可以參考下2021-11-11使用Python編寫(xiě)一個(gè)Lisp語(yǔ)言的解釋器
這篇文章主要為大家詳細(xì)介紹了如何使用Python編寫(xiě)一個(gè)簡(jiǎn)單的Lisp語(yǔ)言的解釋器,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-11-11