【发布时间】:2018-05-08 16:42:10
【问题描述】:
我不喜欢另一个post。 因为它涉及重命名 python 可执行文件。
【问题讨论】:
-
请把它变成一个带有细节(例如限制和具体目标)的问题。
标签: python windows batch-file cmd environment-variables
我不喜欢另一个post。 因为它涉及重命名 python 可执行文件。
【问题讨论】:
标签: python windows batch-file cmd environment-variables
这是我的发现。
第 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 并单击Edit。 PATH
第 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。每次调用 python27 或 python36 时,它都会使用新的 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。
【讨论】:
py 前端,它可以根据 shebang 运行 python 2 或 python 3。即使上述解决方案有效,也不要指望任何人在工业规模上遵循它......
我认为支持各种 Python 版本以及其他语言的最简单方法是 asdf 版本管理器。它允许您在全局以及每个项目文件夹中设置 Python 版本。这意味着您可以将 Python 版本设置为根据您正在工作的文件夹动态更改。
我已经有将近 20 年没有使用 Windows 了,但我听说 Windows 10 支持基于 Ubuntu 的 Linux 子系统。我不知道 asdf 是否可以使用,但值得一试。只需使用 bash 设置 asdf 的说明即可。
【讨论】:
TL;DR:使用指向您当前版本的符号链接并将其放在您的路径上。
Linux 有替代命令来全局切换版本,但我这样做:
C:\Python\Python38、C:\Python\Python36等下安装Python变种C:\Python\Current;C:\Python\Current\Scripts
@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(以及批处理文件)需要提升权限
【讨论】: