解决windows下命令行执行python3失效,会打开应用商店问题

 更新时间:2024年02月24日 10:12:56   作者:匿鹤  
这篇文章主要介绍了解决windows下命令行执行python3失效,会打开应用商店问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

之前一直用pycharm开发,调试也在linux下比较多,最近试了试了vscode+conda在windows下开发,遇到了几个比较坑的问题,记录一下。

一、问题描述

刚开始用vscode开发,写了一个简单的web程序,成功run起来了,因为vscode不能像pycharm一样在一个项目中同时执行两个py文件(也可能需要什么插件?),所以在vscode的终端powershell执行了一个简单的测试脚本来测试,但是居然没有任何反应???好像没执行一样。

python3 test.py

二、问题原因

开始猜测是vscode问题,windows单独打开powershell,执行python3 test.py,还是不行。

把web程序停了,单独使用vscode右键run python file in terminal,执行成功了。。。。

然后我对比了一下执行的命令有何不同

# vscode里执行的命令 
F:/*路径*/python.exe   d:/*路径*/test.py
# 我执行的命令
 python3   test.py

一个是python,一个是python3, 是windows系统中python3和python指向的不是一个?

在powershell中测试,执行python命令,成功进入了我们的conda python环境。

 执行python3,打开了windows应用商店????

三、解决方案

其实找到问题后,只要以后执行只用python, 不用python3就可以了,但是因为还是想搞明白问题原因,于是继续研究了一下。

1、删除、调整环境变量顺序(没用)

百度查找了一下,有人说是因为windows应用商店的环境变量排在我们的python环境变量之前,于是修改系统环境变量,将应用商店的环境变量下移到最后:

保存重启,再次测试,没有成功。。。

那直接删了windows的应用商店,再次测试,直接报错没有python3了???

2、解决方案一:复制poython可执行文件并重命名

这时意识到了可能是windows下的python可能和linux下不同,默认可能没有python3

打开powershell,使用如下命令查看环境变量(注意$不能省), $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环境变量目录,打开查看,果然没有python3

将python.exe和pythonw.exe各复制一份,命名为python3.exe和pythonw3.exe, 然后就可以使用python3了。

3、解决方案二:powershell给python起别名python3

重命名的方法确实可以解决问题,但是我有很多个虚拟环境,以后每次创建新的虚拟环境都需要复制一遍,太麻烦了。

我想应该有什么方式让python3直接指向python, 就像在linux下查看目录的详细信息命令 ll 等于 ls -l 一样。

又研究了一下,powershell给命令配置别名。

# 先检查是否存在别名python3,这是一个新的别名,所以没有任何输出。
$Alias:python3
# 为python命令创建别名
Set-Alias python3 python.exe
# 查此别名是否成功创建
$Alias:python3
# 注意:这种方式的别名不是永久的。关闭PowerShell后,就没有了。

这样可以临时修改,要想永久修改,需要更改powershell的配置文件(相当于修改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
 

修改完成后重启终端,就可以了。

四、其他的坑

当修改完后,果然windows下的终端可以正常使用python3了,但是当我在vscode的终端里执行python3的时候,又给我打开了windows应用商店 --。--!!!

在vscode的终端查看配置文件,发现我没有修改,但是windows默认的powershell中能用。

仔细查看对比了一下,两个powershell的配置文件路径不一样!!

它们在不同的目录,一个叫PowerShell,另一个叫WindowsPowerShell。

版本也不一样,一个是powershell5, 一个是powershell7。

使用如下命令查看powershell版本

$PSVersionTable.PSVersion

 

powershell5和powershell7的区别,可以参考:Windows PowerShell 5.1 与 PowerShell 7.x 之间的差异 - PowerShell | Microsoft Learn

将两个的配置文件都修改了,vscode下终端也能用python3了。

总结

至此,折腾了半天,终于解决了问题。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持程序员之家。

相关文章

  • tensorflow查看ckpt各节点名称实例

    tensorflow查看ckpt各节点名称实例

    今天小编就为大家分享一篇tensorflow查看ckpt各节点名称实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • python使用opencv读取图片的实例

    python使用opencv读取图片的实例

    下面小编就为大家带来一篇python使用opencv读取图片的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • Python?jiaba库的使用详解

    Python?jiaba库的使用详解

    这篇文章主要为大家介绍了Python jiaba库的使用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助,希望能够给你带来帮助
    2021-11-11
  • python实现的防DDoS脚本

    python实现的防DDoS脚本

    实现原理是,查询netstat的连接数,同IP超过一定连接的用iptables封禁一定时间,自动封禁,自动解封。
    2011-02-02
  • Python+Socket实现基于UDP协议的局域网广播功能示例

    Python+Socket实现基于UDP协议的局域网广播功能示例

    这篇文章主要介绍了Python+Socket实现基于UDP协议的局域网广播功能,结合实例形式分析了Python+socket实现UDP协议广播的客户端与服务器端功能相关操作技巧,需要的朋友可以参考下
    2017-08-08
  • Django使用uwsgi部署时的配置以及django日志文件的处理方法

    Django使用uwsgi部署时的配置以及django日志文件的处理方法

    今天小编就为大家分享一篇Django使用uwsgi部署时的配置以及django日志文件的处理方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • Python操作MySQL的方法详细解读

    Python操作MySQL的方法详细解读

    这篇文章主要介绍了Python操作MySQL的方法详细解读,在Python中,通过使用第三方库:pymysql,完成对MySQL数据库的操作,Python操作MySQL并不难,难点是如何编写合适的SQL语句,需要的朋友可以参考下
    2023-11-11
  • Python 实现局域网远程屏幕截图案例

    Python 实现局域网远程屏幕截图案例

    这篇文章主要介绍了Python 实现局域网远程屏幕截图案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • python图片二值化提高识别率代码实例

    python图片二值化提高识别率代码实例

    这篇文章主要介绍了python图片二值化提高识别率代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Python绘图之二维图与三维图详解

    Python绘图之二维图与三维图详解

    这篇文章主要介绍了Python绘图之二维图与三维图详解,文中通过示例代码与效果图片一一对照介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08

最新评论

?


http://www.vxiaotou.com