【问题标题】:how to access python from command line using py instead of python如何使用 py 而不是 python 从命令行访问 python
【发布时间】:2015-09-23 14:18:09
【问题描述】:

我有一个非常奇怪的要求。我拥有的可执行文件对 python 脚本进行了系统调用,类似于 py file1.py 现在,在我的系统中,虽然 py 显示为无法识别的内部或外部命令。但是 python file1.py 可以工作。

有什么方法可以让我的 Windows 命令提示符识别 py 和 python 指的是同一个东西?

【问题讨论】:

标签: python windows python-2.7 cmd


【解决方案1】:

py 命令随 Python3.x 一起提供,并允许在多个 Python 解释器中进行选择。例如,如果您同时安装了 Python 3.4 和 2.7,py -2 将启动 python2.7,py -3 将启动 python3.4。如果您只使用py,它将启动定义为默认值的那个。

所以官方的方法是安装 Python 3.x,将 Python 2.7 声明为默认,py 命令将完成它的工作。

但如果你只是想让py 成为python 的别名,@Nizil 和@ergonaut 提出的doskey py=python.exe 会简单得多......或者将python.exe 复制到Python27 文件夹中的py.exe如果你不想被doskey的限制所困扰。

【讨论】:

  • 如果您期望控制台别名(即AddConsoleAlias)表现得像 bash 别名,通常会让您失望。它在控制台主机进程 (conhost.exe) 中的一行输入的开头匹配,因此 cmd.exe 将逐字读取“python.exe”而不是“py”。附加到给定控制台的每个可执行文件都定义了自己的一组别名(例如,您可以添加特定于 python.exe 的别名)。令人失望的是它们只是一个简单的输入翻译。它们不会在命令行或批处理文件中的其他地方工作。
  • 您也无意中回答了相关疑问之一。在我安装 Python 2.7 的另一台机器上,我可以使用 py 命令而不使用任何别名,这很令人困惑。阅读您的回答,我意识到 Python 3 已经安装在该机器上。
  • @eryksun 对输入翻译的评论也非常相关。别名仅适用于该 cmd 会话。由于我只有可执行文件,所以我只是使用了 Alex 的解决方案并复制了 python.exe,将其重命名为 py.exe。我只是想让这个工作现在,所以这个 hack 工作。
  • @TheBlueNotebook,别名在附加的 conhost.exe 实例中设置。 cmd.exe 甚至不知道它的存在。您可以在控制台中启动一个 cmd 子shell,定义一个别名,退出该子shell,并且别名仍然存在。 conhost.exe 退出后它就消失了,但是 doskey.exe /macros:all 选项的输出可以重定向到一个文件并通过 /macrofile=filename 选项在另一个控制台中重新加载。控制台别名的一个大问题是它只是在行首替换控制台输入文本,例如你不能用py 别名来做someapp.exe | py file1.py
  • @holdenweb:完全正确。当安装了多个 Python 版本时,类 Unix 系统还有其他方法可以选择正确的 Python 版本。 py 只是 Windows 的方式。
【解决方案2】:

在命令行输入:

doskey py=python

这将创建一个 Windows 别名,因此使用 py 与使用 python 相同。

【讨论】:

  • 请考虑编辑您的帖子,以添加更多关于您的代码的作用以及它为何能解决问题的说明。一个大部分只包含代码的答案(即使它正在工作)通常不会帮助 OP 理解他们的问题。
猜你喜欢
  • 1970-01-01
  • 2017-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多