安装了多个Python版本:如何为CMD和 "Open with "的py.exe (Python Launcher for Windows)设置默认版本。

0 人关注

In brief:
我安装了两个版本的Python。Python 3.6 和 Python 3.9。 我想用 Python Launcher for Windows 打开我所有的 .py .pyw (例如:当我双击它们时)。我希望 Python launcher for Windows 的默认版本是 Python 3.6,这样,没有 shebang 的文件就会用 Python 3.6 打开。Python 3.9 应该只用于带有 shebang 的文件 #! python3.9

当我右击一个文件,选择 open with 并选择 C:\Windows\py.exe ,那么默认情况下(没有任何shebang),打开的是Python 3.9。 当我在一个 CMD 中输入 py 时我得到 Python 3.6.5
But if I double click on C:\Windows\py.exe the console is 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 中打开的,所以它们失败了。

我已经做了什么。

  • 我已经创建了一个 C:\Windows\py.ini ,默认设置为 python=3.6 (对 pyw 也是如此)。

  • 在路径上,我已将 C:\Users\user\AppData\Local\Programs\Python\Python36\ 移至 C:\Users\user\AppData\Local\Programs\Python\Python39 之上。

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

  • I have run assoc .py=Python

  • The Windows文档 The py.exe launcher will automatically select the most recent version of Python you've installed ,所以我重新安装了Python 3.6(在已经安装了Python 3.9之后),但是,当我用 C:\WINDOWS\py.exe 打开一个文件时,仍然默认设置为Python 3.9。

  • ftype | find "Python" return this

    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

  • 5 个评论
    你目前是如何启动python的?从Windows文件夹中启动它的原因是什么?
    替换代码0】的结果是什么?
    @TheLazyScripter py.exe 应该是在Windows文件夹中。请参考文档。
    在你更新了你的路径之后,你是打开了一个全新的cmd窗口,还是使用了你在改变路径之前打开的那个? cmd窗口不会根据系统控制的变化动态地更新其环境。
    是的 py.exe 应该位于Windows文件夹中(为所有用户安装时)。然而,直接的exe位于 appdata\local\programs\Python\MyPythonVersion 中。路径变量应该连接到这里,而不是Windows文件夹。
    python
    python-3.x
    cmd
    window
    launcher
    MagTun
    MagTun
    发布于 2021-06-25
    1 个回答
    MagTun
    MagTun
    发布于 2021-06-26
    已采纳
    0 人赞同

    一旦你安装了Python的第二个版本 (在这个例子中是Python 3.9),如果你仍然希望以前的版本 (在这个例子中是Python 3.6) 成为默认版本,那么你可以这样做。
    1) 在CMD中为 py 命令设置默认的Python版本

  • go to C:\WINDOWS\ and create 2 files py.ini and pyw.ini

  • 这两个文件应包含

    [默认值]
    python=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 *   
    

    CMD中不要再使用python,一定要使用带有正确参数的py【正如@karl-knechtel的评论中所指出的。如果你有一个活跃的venv, using python instead of py`会优先考虑venv的Python,这通常是你想要的】。]

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

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

  • go to C:\Users\<user>\AppData\Local\Programs\Python\Launcher\ and create 2 files py.ini and pyw.ini

  • 这两个文件应包含

    [默认值]
    python=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

  • should be 3.9

    #!python3.9
    import sys
    print(sys.version_info)
    input("close")

  • 应该是3.6,因为它将调用默认的

    #!python
    import sys
    print(sys.version_info)
    input("close")

  • 应该是3.6,因为它将调用默认的

    import sys
    print(sys.version_info)
    input("close")

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

    #!python3

  •