【问题标题】:How to control what version of Python is run when double clicking a file?双击文件时如何控制运行的Python版本?
【发布时间】:2012-02-17 15:30:25
【问题描述】:

有没有办法控制双击 py 文件时运行的 python 版本?从命令行和 eclipse 等环境中,我可以控制运行的版本。但是双击我不确定。

我安装了 2.6 和 2.7。 2.6 是针对某些特定于应用程序的东西,我想将 2.7 设为默认值。我已将“C:\Python27”添加到 PATH 环境变量中,并且在命令行中运行良好。 C:\path\to\some\file>python someFile.py 将在 2.7 中运行该文件。但是如果我从资源管理器中双击同一个文件,它会运行 2.6。如何让它运行 2.7?

【问题讨论】:

标签: python windows version environment-variables double-click


【解决方案1】:

好的,我找到了Python Launcher,它正是我所追求的。下载地址here。当通过右键菜单更改文件关联时,安装它为我提供了“Windows 的 Python 启动器(GUI)”选项。

添加shebang线

#!/usr/bin/python2.7

强制脚本在 2.7 中运行。

这很好用,因为我可以控制正在运行的 python 版本,而用户永远不需要知道。不需要 bat 文件,也不需要拖到快捷方式等。漂亮干净,最重要的是,没有用户错误的余地。

【讨论】:

    【解决方案2】:

    在 Windows 上,您必须 modify the file associations,例如通过右键单击 → Open with ...Choose default program 或控制面板的文件夹设置。您可以通过浏览按钮导航到所需的 python.exe,在多个 python 安装之间进行选择:

    或者,您可以通过键入在命令外壳中更改关联

    ftype Python.File="C:\Python27\python.exe" "%1" %*
    

    请注意,这需要管理员权限。如果您的机器上启用了 UAC,请在开始菜单中右键单击 cmd 并选择Run as administrator

    在与 freedesktop.org 兼容的桌面上,您可以配置与 xdg-mime 的关联。

    在基于 debian 的发行版上,您可以使用 update-alternatives 更改默认 python。在所有系统上,您还可以将路径中的 python 符号链接到正确的实现,如下所示:

    $ sudo ln -sf python2.7 /usr/bin/python
    

    如果文件被标记为可执行文件,如果它以#!和解释器名称开头,也可以直接从命令行或GUI执行:

    #!/usr/bin/env python
    

    要为您的程序选择特定的 Python 版本,您可以使用以下行之一启动您的 Python 程序:

    #!/usr/bin/env python2.7
    #!/usr/bin/python2.7
    

    【讨论】:

    • ...在所有其他操作系统上,只需将 Python 解释器的路径放在 #!脚本第一行的字符。
    • 更新了其他操作系统的答案。不幸的是,这比添加 shebang 要复杂一些。
    • 感谢您的回复。不幸的是,修改文件扩展名不起作用,因为 2.6 和 2.7 具有相同的可执行文件名称 (python.exe)。 windows似乎无法区分它们。所以如果我修改文件关联并浏览到 2.7.无论如何,该文件仍然在 2.6 中运行。除非我忽略了什么?
    • @ollie 它们具有相同的可执行文件basename,但没有filename(即exes 位于不同的目录中)。我添加了一张图片,显示在哪里可以找到“浏览”按钮,以及一个命令行选项。
    • ftype Python.File="C:\Python35\python.exe" "%1" %* 设置最后一个 python 版本(对我来说:python3.6)。如果您的最后一个版本是 3.6,但您想要 3.5,只需在您的文件夹中添加一些 xxx(xxxpython36),这样它将采用最后一个识别的版本,即 python3.5(在 cmd 删除 xxx 之后)
    【解决方案3】:

    您可以使用ASSOCFTYPE

    assoc .py=pyfile
    ftype pyfile=c:\Python27\python.exe %1
    

    【讨论】:

    • 感谢您的回复。我尝试从命令行运行这些命令。 ftype 确实在看 python26。我将其修改为指向 27。不过,它似乎没有影响在资源管理器中双击。文件仍然可以使用 2.6 运行。我需要做一些具体的事情来影响资源管理器吗?
    • @olliedunn,您需要使用与assoc 返回的文件类型相同的文件类型。在我的系统上是Python.File
    • 我编辑了示例以使用 Python.File,因为这是 python 安装程序默认使用的内容
    【解决方案4】:
    猜你喜欢
    • 1970-01-01
    • 2022-12-03
    • 1970-01-01
    • 2021-02-08
    • 2023-02-02
    • 2012-02-23
    • 2021-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多