解決windows下命令行執(zhí)行python3失效,會打開應(yīng)用商店問題
之前一直用pycharm開發(fā),調(diào)試也在linux下比較多,最近試了試了vscode+conda在windows下開發(fā),遇到了幾個比較坑的問題,記錄一下。
一、問題描述
剛開始用vscode開發(fā),寫了一個簡單的web程序,成功run起來了,因為vscode不能像pycharm一樣在一個項目中同時執(zhí)行兩個py文件(也可能需要什么插件?),所以在vscode的終端powershell執(zhí)行了一個簡單的測試腳本來測試,但是居然沒有任何反應(yīng)???好像沒執(zhí)行一樣。
python3 test.py
二、問題原因
開始猜測是vscode問題,windows單獨打開powershell,執(zhí)行python3 test.py,還是不行。
把web程序停了,單獨使用vscode右鍵run python file in terminal,執(zhí)行成功了。。。。
然后我對比了一下執(zhí)行的命令有何不同
# vscode里執(zhí)行的命令 F:/*路徑*/python.exe d:/*路徑*/test.py # 我執(zhí)行的命令 python3 test.py
一個是python,一個是python3, 是windows系統(tǒng)中python3和python指向的不是一個?
在powershell中測試,執(zhí)行python命令,成功進(jìn)入了我們的conda python環(huán)境。

執(zhí)行python3,打開了windows應(yīng)用商店????

三、解決方案
其實找到問題后,只要以后執(zhí)行只用python, 不用python3就可以了,但是因為還是想搞明白問題原因,于是繼續(xù)研究了一下。
1、刪除、調(diào)整環(huán)境變量順序(沒用)
百度查找了一下,有人說是因為windows應(yīng)用商店的環(huán)境變量排在我們的python環(huán)境變量之前,于是修改系統(tǒng)環(huán)境變量,將應(yīng)用商店的環(huán)境變量下移到最后:

保存重啟,再次測試,沒有成功。。。
那直接刪了windows的應(yīng)用商店,再次測試,直接報錯沒有python3了???

2、解決方案一:復(fù)制poython可執(zhí)行文件并重命名
這時意識到了可能是windows下的python可能和linux下不同,默認(rèn)可能沒有python3
打開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
.
找到第一個python環(huán)境變量目錄,打開查看,果然沒有python3

將python.exe和pythonw.exe各復(fù)制一份,命名為python3.exe和pythonw3.exe, 然后就可以使用python3了。
3、解決方案二:powershell給python起別名python3
重命名的方法確實可以解決問題,但是我有很多個虛擬環(huán)境,以后每次創(chuàng)建新的虛擬環(huán)境都需要復(fù)制一遍,太麻煩了。
我想應(yīng)該有什么方式讓python3直接指向python, 就像在linux下查看目錄的詳細(xì)信息命令 ll 等于 ls -l 一樣。
又研究了一下,powershell給命令配置別名。
# 先檢查是否存在別名python3,這是一個新的別名,所以沒有任何輸出。 $Alias:python3 # 為python命令創(chuàng)建別名 Set-Alias python3 python.exe # 查此別名是否成功創(chuàng)建 $Alias:python3 # 注意:這種方式的別名不是永久的。關(guān)閉PowerShell后,就沒有了。
這樣可以臨時修改,要想永久修改,需要更改powershell的配置文件(相當(dāng)于修改linux下的 .bashrc 文件)。
首先在powershell里輸入$profile,查看profile文件的位置,然后打開,加入
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的時候,又給我打開了windows應(yīng)用商店 --。--?。?!
在vscode的終端查看配置文件,發(fā)現(xiàn)我沒有修改,但是windows默認(rèn)的powershell中能用。
仔細(xì)查看對比了一下,兩個powershell的配置文件路徑不一樣??!

它們在不同的目錄,一個叫PowerShell,另一個叫WindowsPowerShell。
版本也不一樣,一個是powershell5, 一個是powershell7。
使用如下命令查看powershell版本
$PSVersionTable.PSVersion


powershell5和powershell7的區(qū)別,可以參考:Windows PowerShell 5.1 與 PowerShell 7.x 之間的差異 - PowerShell | Microsoft Learn
將兩個的配置文件都修改了,vscode下終端也能用python3了。
總結(jié)
至此,折騰了半天,終于解決了問題。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python實現(xiàn)分析apache和nginx日志文件并輸出訪客ip列表的方法
這篇文章主要介紹了python實現(xiàn)分析apache和nginx日志文件并輸出訪客ip列表的方法,涉及Python操作日志文件的技巧,非常具有實用價值,需要的朋友可以參考下2015-04-04
python 列出面板數(shù)據(jù)所有變量名的示例代碼
在Python中,處理面板數(shù)據(jù)(Panel Data)通常使用pandas庫,特別是當(dāng)數(shù)據(jù)以DataFrame或Panel,這篇文章主要介紹了python 列出面板數(shù)據(jù)所有變量名,需要的朋友可以參考下2024-06-06
Python使用微信SDK實現(xiàn)的微信支付功能示例
這篇文章主要介紹了Python使用微信SDK實現(xiàn)的微信支付功能,結(jié)合實例形式分析了Python調(diào)用微信SDK接口實現(xiàn)微信支付功能的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下2017-06-06
python 并發(fā)編程 多路復(fù)用IO模型詳解
這篇文章主要介紹了python 并發(fā)編程 多路復(fù)用IO模型詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-08-08
python eval 轉(zhuǎn)換k m到乘法計算的操作
這篇文章主要介紹了python eval 轉(zhuǎn)換k m到乘法計算的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-05-05

