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

目录

一、问题描述

二、问题原因

三、解决方案

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

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

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

四、其他的坑


一、问题描述

刚开始用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:Pathsplit “;”

(env_name) PS C:Usersuser> $env:Path -split ";"
F:Usersuseranaconda3envsenv_name
F:Usersuseranaconda3envsenv_nameLibrarymingw-w64bin
F:Usersuseranaconda3envsenv_nameLibraryusrbin
F:Usersuseranaconda3envsenv_nameLibrarybin
F:Usersuseranaconda3envsenv_nameScripts
F:Usersuseranaconda3envsenv_namebin
F:Usersuseranaconda3condabin
C:Windowssystem32
C:Windows
C:WindowsSystem32Wbem
C:WindowsSystem32WindowsPowerShellv1.0
C:Program Filesdotnet
C:WINDOWSsystem32
C:Program FilesPowerShell7
C:UsersuserAppDataLocalProgramsPythonPython36Scripts
C:UsersuserAppDataLocalProgramsPythonPython36
.

找到第一个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文件位置然后打开加入

setalias python3 python.exe   即可

(base) PS C:Usersuser> $profile
C:UsersuserDocumentsWindowsPowerShellMicrosoft.PowerShell_profile.ps1
#region conda initialize
# !! Contents within this block are managed by 'conda init' !!
(& "F:Usersuseranaconda3Scriptsconda.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了。

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

原文地址:https://blog.csdn.net/nihe001/article/details/128338799

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_45554.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注