【问题标题】:Switch between different Python versions in Windows 10 cmd在 Windows 10 cmd 中不同 Python 版本之间切换
【发布时间】:2018-05-08 16:42:10
【问题描述】:

我不喜欢另一个post。 因为它涉及重命名 python 可执行文件。

【问题讨论】:

  • 请把它变成一个带有细节(例如限制和具体目标)的问题。

标签: python windows batch-file cmd environment-variables


【解决方案1】:

这是我的发现。

第 1 步。转到System Properties。点击Environment Variables

第 2 步。添加新变量,例如 PYTHON_27_HOME

  • PYTHON_27_HOME:%ProgramFiles%\Python27\
  • PYTHON_36_HOME:%ProgramFiles%\Python36\
  • PYTHON_HOME:%PYTHON_27_HOME%

在我的例子中,PYTHON_27_HOME(Python 2.7) 指向C:\Program Files\Python27\。您可以将其替换为您自己的python 路径。 %PYTHON_HOME% 有一个默认值指向 %PYTHON_27_HOME%,这是 Python 2.7 的路径。这是我的偏好,请随意调整。请注意,有 32 位和 64 位 python。 请使用%PROGRAMFILES% 作为C:\Program Files 的路径,使用%PROGRAMFILES(X86)% 作为C:\Program Files (x86) 的路径。

第 3 步。选择PATH 并单击EditPATH

第 4 步。点击New 并添加%PYTHON_HOME%。每次启动命令提示符时,%PYTHON_HOME% 都会自动添加到 PATH


为了在cmd中切换不同版本的python,这里有窍门。

第 5 步。我用

创建了一个批处理文件
@echo off
:: Switch Python version
DOSKEY python27=SET PATH=%PYTHON_27_HOME%;%PATH%
DOSKEY python36=SET PATH=%PYTHON_36_HOME%;%PATH%

基本上,它会禁用 echo 并创建两个别名。在批处理文件中,:: 之后的任何字符串都是 cmets。每次调用 python27python36 时,它都会使用新的 Python 路径重新导出 %PATH%。另存为profile.bat。你可以随意命名它。

第 6 步。 搜索 regedit(注册表编辑器)。点击Edit > New > String Value。将AutoRun 指定为Value name,将%USERPROFILE%\profile.bat 指定为Value data。在这里,请将您的实际路径值放入我们刚刚创建的profile.bat。因此,每当打开命令提示符时,它都会自动加载 profile.bat,从而在脚本中创建这两个别名。

第 7 步。关闭您正在使用的任何命令提示符,或者只打开一个新的命令提示符。这是因为您的更改不会影响打开的 cmd 窗口。环境更改仅发生在新 CMD 上。

第 8 步。验证您的结果here

如果您使用不同的 Java 版本,同样的技巧也适用。找到我的javac 环境设置here

【讨论】:

  • 哇!这似乎非常令人费解和复杂。 Windows 不支持版本管理器,例如 asdf 或 pyenv?
  • 这只是一种品味和偏好。我不是指使用第三方版本管理器。
  • windows 有一个 py 前端,它可以根据 shebang 运行 python 2 或 python 3。即使上述解决方案有效,也不要指望任何人在工业规模上遵循它......
  • Windows 有一个 py 前端?对此 py 前端的任何引用表示赞赏。
【解决方案2】:

我认为支持各种 Python 版本以及其他语言的最简单方法是 asdf 版本管理器。它允许您在全局以及每个项目文件夹中设置 Python 版本。这意味着您可以将 Python 版本设置为根据您正在工作的文件夹动态更改。

asdf version manager

我已经有将近 20 年没有使用 Windows 了,但我听说 Windows 10 支持基于 Ubuntu 的 Linux 子系统。我不知道 asdf 是否可以使用,但值得一试。只需使用 bash 设置 asdf 的说明即可。

【讨论】:

  • 这个问题专门针对 Windows,asdf 不支持。
  • @looeee - 首先,我在帖子中明确提到了这一事实。其次,如果启用 WSL,它确实有效。如果你是对我投反对票的人,如果你能扭转这一行动,我将不胜感激,因为我说的是准确的并且确实有效。
【解决方案3】:

TL;DR:使用指向您当前版本的符号链接并将其放在您的路径上。

Linux 有替代命令来全局切换版本,但我这样做:

  1. C:\Python\Python38C:\Python\Python36等下安装Python变种
  2. 设置您的 PATH 以包含 C:\Python\Current;C:\Python\Current\Scripts
  3. 有一个这样的批处理文件来切换版本:
    @echo off
    echo 1. Python 3.8
    echo 2. Python 3.6   
    set /p ver="Enter Version: "
    
    if [%ver%]==[1] (
        SET FOLDER=C:\Python\Python38
    ) ELSE if [%ver%]==[2] (
        SET FOLDER=C:\Python\Python36
    ) ELSE (
        GOTO end
    )
    
    if exist C:\Python\Current\nul (
        rmdir C:\Python\Current
    )
    
    MKLINK /D C:\Python\Current %FOLDER%
    
    :end

唯一的缺点是 MKLINK(以及批处理文件)需要提升权限

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-04
    • 2016-10-26
    • 2015-02-18
    • 2015-01-15
    • 2020-05-08
    • 2016-01-17
    相关资源
    最近更新 更多