安装了多个 Python 版本:如何为 CMD 和“打开方式”设置 py.exeWindows 的 Python 启动器的默认版本

问题描述

简而言之:
我安装了两个版本的 Python:Python 3.6 和 Python 3.9。 我想使用适用于 Windows 的 Python Launcher 打开我所有的 .py.pyw(例如:当我双击它们时)。我希望适用于 Windows 的 Python 启动器的认版本是 Python 3.6,以便使用 Python 3.6 打开没有 shebang 的文件。 Python 3.9 应仅用于带有 shebang #! python3.9

文件

当我右键单击一个文件时,选择 open with 并选择 C:\Windows\py.exe,然后认情况下(没有任何 shebang),它是打开的 Python 3.9。 当我在 py 中输入 CMD 时,我得到 Python 3.6.5
但是如果我双击 C:\Windows\py.exe,控制台是 Python 3.9.5

如果我设置了 open all .py' to C:\Windows\py.exe,then if they don't have a sheband they will be started with Python 3.6.5`,我如何确定?

详情:

我只在 Python 3.6 上运行,直到我同时安装了 Python 3.9。我还没有将所有包更新到 Python 3.9,所以我希望认的 Python 是 3.6。对于需要使用 Python 3.9 的脚本,我使用 shebang #! python3.9

因此,我想将 Opens with... 认设置为 C:\Windows\py.exe,但如果我这样做,我的脚本将在 Python 3.9.5 中打开,因此它们失败了。

我已经做过的:

  1. 我创建了一个 C:\Windows\py.ini认设置为 python=3.6pyw 也是如此)。

  2. 在路径中,我已将 C:\Users\user\AppData\Local\Programs\Python\python36\ 移到 C:\Users\user\AppData\Local\Programs\Python\python39 上方。

  3. 我已将另一个环境变量 PY_PYTHON 设置为 PY_PYTHON=3.6

  4. 我已经跑了 assoc .py=Python

  5. Windows documentation 表示 The py.exe launcher will automatically select the most recent version of Python you've installed,所以我重新安装了 Python 3.6(在已经安装了 Python 3.9 之后)但是,当我用 { 打开一个文件时,认值仍然设置为 Python 3.9 {1}}

  6. C:\WINDOWS\py.exe 返回这个

    Python.ArchiveFile="C:\WINDOWS\py.exe" "%L" %*
    Python.CompiledFile="C:\WINDOWS\py.exe" "%L" %*
    Python.File="C:\WINDOWS\py.exe" "%L" %*
    Python.NoConArchiveFile="C:\WINDOWS\pyw.exe" "%L" %*
    Python.NoConFile="C:\WINDOWS\pyw.exe" "%L" %*

我使用的是 Windows 10

解决方法

一旦您安装了 Python 的第二个版本(在本例中为 Python 3.9),如果您仍希望将先前版本(在本例中为 Python 3.6)作为默认版本,那么您可以执行以下操作:
1) 为 CMD 中的 py 命令设置默认 Python 版本

  • 转到 C:\WINDOWS\ 并创建 2 个文件 py.inipyw.ini

  • 这两个文件都应该包含

    [默认]
    蟒蛇=3.6

完成此操作后,如果您在 py 中输入 CMD,则会打开 Python 3.6 控制台。如果您需要 Python 3.9 控制台,请键入 py -3.9。要查看哪个是默认值,请运行 py -0p 并查找 *

Installed Pythons found by py Launcher for Windows    
 -3.9-64        C:\Users\<user>\AppData\Local\Programs\Python\Python39\python.exe    
 -3.6-64        C:\Users\<user>\AppData\Local\Programs\Python\Python36\python.exe *   

不要在 python 中再使用 CMD,始终使用带有正确参数的 py

py -3.9 pip install     # will install package for 3.9
py pip install     # will install package for 3.6

2) 设置双击打开文件时的默认 Python 版本

  • 转到 C:\Users\<user>\AppData\Local\Programs\Python\Launcher\ 并创建 2 个文件 py.inipyw.ini

  • 这两个文件都应该包含

    [默认]
    蟒蛇=3.6

  • 右键单击任何 .py,选择 open with,选中 Always use this app...,一直向下滚动并点击 more app,再次向下滚动然后点击look for another app...,然后选择C:\WINDOWS\py.exe

完成后,如果文件不包含shebang,那么它将以默认的Python 版本启动,并带有3.6。要使用 Python 3.9,请在脚本的最顶部添加此 #!python3.9

如果您想在设置 open all with... 之前进行测试,您可以将这些添加到一些测试脚本的最顶部以查看将使用哪个版本,然后使用 open with 而无需检查 use for all :

  • 应该是 3.9

    #!python3.9
    导入系统
    打印(sys.version_info)
    输入(“关闭”)

  • 应该是 3.6,因为它会调用默认值

    #!python
    导入系统
    打印(sys.version_info)
    输入(“关闭”)

  • 应该是 3.6,因为它会调用默认值

    导入系统
    打印(sys.version_info)
    输入(“关闭”)

  • 应该是 3.9,因为它是最新安装的 python 3

    #!python3
    导入系统
    打印(sys.version_info)
    输入(“关闭”)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...