PowerShell 中的 Python 版本

14

我之前在Windows 10上运行的是Python 2.7.11。

今天,我下载并安装了Python 2.7.13,但PowerShell版本仍为2.7.11:

python --version
Python 2.7.11
  1. 我如何检查我电脑上安装的所有Python版本?
  2. 我如何卸载Python 2.7.11?
  3. 我如何将Python 2.7.13设置为在PowerShell中启动的默认Python版本?
3个回答

29
在PowerShell中,Get-Command python | fl *命令可以告诉你它找到的Python可执行文件以及有关其所在位置的详细信息。
1. 您可以检查 设置 -> 应用和功能 或者 控制面板 -> 程序和功能。它们会显示您安装的不同版本的Python,但如果Python作为其他工具包或程序的一部分安装,则这可能不足够。 2. 如有 Python 2.7.11,请选中它并点击卸载。如果没有,请查看先前 Get-Command 命令的输出,看看它是与什么一起安装的,并决定是否要删除它。 3. PowerShell 在输入命令时如何选择要运行的内容已在帮助文档about_Command_Precedence中解释。按照以下顺序:
- 别名 - 函数 - Cmdlet - 本机Windows命令
到达“本机Windows命令”时,它会查找 PATH 环境变量,这是一个分号分隔的路径列表,按顺序搜索其中的文件夹,寻找匹配的可执行文件。
您可以使用以下命令查看这些文件夹:
$Env:PATH -split ';'

你可以使用以下命令观察PowerShell如何识别要运行的 'python':

Get-Command python

Trace-Command –Name CommandDiscovery –Expression {get-command python} -PSHost

所以,要让 Python 2.7.13 成为默认启动的版本,你可以:

  • 将其设置为唯一可用的 Python 版本。
  • 将其文件夹移到 PATH 列表的最前面,超过其他任何版本。参见:SuperUser.com 上关于路径和其他环境变量的问题
  • 创建一个批处理文件 python.bat 在 PATH 中某个文件夹中启动它,该文件夹必须在其他版本的前面。
  • 创建一个别名(在您的 PS Profile 中)命名为 python,以启动您想要的版本(New-Alias -name python -Value C:\Python27\python.exe 等)。

@TessellatingHeckler,它有效了!谢谢(:顺便问一下..这些Python的shell命令有通用名称吗?我很想学习更多关于这些东西的知识,但是学习Python的资源似乎没有涵盖它们。 - Yeile
@Yeile 很好。我不太确定你在问什么;你运行的那个 python(.exe) 文件的通用术语是Python解释器。除非你安装了,否则我不确定Python是否有其他默认的可执行文件。不确定Python相关工具是否真的有一个术语? - TessellatingHeckler

0

这是一个关于Python 2.7 的问题,但可能对3.3以上版本也有用:

以前,安装多个Python版本很少见,只需将可用的python.exe直接放在PATH中即可。但是,如果简单地放置多个已安装的Python版本,它们将冲突并互相覆盖。
3.3以后,引入了Python启动器,它可以自动检测和运行所需的版本。应该将其放置在PATH中,而不是特定的Python可执行文件。

现在最好不要默认提供任何python.exe,而是临时激活可用性。例如,您有许多Python版本之一位于D:\python_install\python.exe。在批处理中,默认情况下,python命令正确地以未找到错误结束,但是在附加命令SET PATH=D:\python_install\;%PATH%之后,它开始像以前一样工作。

因此,在这种现代情况下,Get-Command python | fl *可能会给您没有或没有帮助的内容。 要运行脚本或获取可用版本,请使用启动器:

  • 确保您已经安装了Python:在PowerShell中通过Get-Command py命令进行测试。如果启动器丢失,请使用官方安装程序中的复选框进行确认。
  • 如果安装正确,命令py -0p --list-paths将会给出已安装版本的良好摘要,并且运行脚本的方式不再是以前的python main.py,而是像py -3.5 main.py这样的命令。运行py --help获取更多信息。

额外确认意图已更改。


-3

我在Python3.8中执行PowerShell命令行语句,

import subprocess
subprocess.call('powershell.exe Get-WmiObject Win32_PnPSignedDriver| select DeviceName, Manufacturer, DriverVersion', shell=True)

运行结果为:

'select' is not an internal or external command, nor an executable program or batch file.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接