Bash: Python3: 找不到命令 (Windows, discord.py)

Bash: Python3: command not found (Windows, discord.py)

我一直在尝试配置 discord API discord.py,目的是 运行 在我的服务器上安装 Red-MusicBot。我已经安装了 Python 3.5,并添加了 PATH 变量(我在安装中单击了 "add Python to PATH" 选项)。这是我的路径变量当前的样子:

C:\Users\Corey Rigney\AppData\Local\Programs\Python\Python35\Scripts\
C:\Users\Corey Rigney\AppData\Local\Programs\Python\Python35\

只有这些与 Python 相关。现在,作为 discord.py 安装过程的一部分,它要我在 Git Bash:

中 运行 这个命令
$ git clone https://github.com/Rapptz/discord.py
$ cd discord.py
$ python3 -m pip install -U .[voice]

前两行完美运行,但第三行returns:

bash: python3: command not found

我还尝试从 GitHub 克隆 pip 作为修复,尽管 python 安装站点说它与 3.5 打包在一起。

我是 运行宁 windows 10,64 位。

这个的总体目标是安装一个不和谐的音乐机器人,如果它有帮助我可以 post 我在尝试 运行 时遇到的错误。

在 Windows 上,python 可执行文件的正常名称是 python.exe(控制台程序)或 pythonw.exe(对于 GUI 程序)。

python 可执行文件有时在某些平台上称为 python3,其中默认 (python) 是旧的 python 2. 在许多基于 UNIX 的 ( inc. Linux 和 OS X) 系统,python 2 由系统实用程序使用,更改它可能会对这些平台产生不良后果,因此得名 "python3"。

在 Windows 上你应该没问题 - Windows 上还有其他问题,但你不会得到这些问题,除非你尝试使用多个 python 版本。

在python installed("c:\Installationpath\Python3.6.0")路径下会找到"python.exe",复制粘贴到原处,重命名为"python3.exe",现在在命令提示符你可以检查 python3 命令应该显示你的 python 安装。不要忘记打开一个新终端。

None 上面的解决方案对我有用,但是,我在 Python 3.7 上找到了成功,而不是写 python3 -m pip install discord.py,我写了 C:\InstallPath\python.exe -m pip install discord.py

这可能有效,因为虽然命令 python3 在 cmd 中不可用,但 python 核心文件的路径有效并采用了与 python3 命令相同的参数。

注意:正常的 python 命令对我不起作用,因为我已经安装了 2。 Discord 出于某种原因需要 3.5 及更高版本?

不是复制可执行文件,而是添加充当 python3.

的脚本

带有 #!python3 shebang 行的 Python 3 脚本将无法 运行,因为 Windows 上不存在 python3.exe - 它可以实现通过 py -3.

要解决此问题,将此脚本作为 python3 添加到您的 PATH 中:它将根据操作系统调用正确的 Python 命令(也适用于 Windows 和 Linux)。

#!/usr/bin/env bash
# Fix problem with `python3` shebang on Windows MSYS Bash

if [[ "$OSTYPE" =~ ^msys ]]; then
  py -3 $*
else
  python3
fi

在 windows 中使用 git bash,python3 对我不起作用:

$ python --version
Python 2.7.15

但是如果我使用 py

$ py --version
Python 3.8.1

不知道为什么,但它起作用了

在 Windows 10 上,您可能会发现 py 有效,而 pythonpython3 无效。

复制 Python 3 可执行文件 python.exe 并将其重命名为另一个答案中建议的 python3.exe 太糟糕了idea,请不要这样做,因为每次将 Python 升级到较新版本时都必须重复它,而且您很可能会忘记它,您会感到惊讶你的 Python 升级后坏了。

我建议进行以下简单设置。

解决方案:符号式 Link python3.exe

只需在 PATH 环境变量的目录中创建一个名为 python3.exe 的符号 link(但 不是 Python 3 安装目录)指向 Python 3 可执行文件 python3/python.exe。符号 link 保留在那里并保持指向正确的可执行文件,即使您升级 Python (因为它在 Python 3 安装目录之外,即使整个目录过时的 Python 被删除,新的 Python 放在那里。

准备起来非常容易:

  1. 执行提升的 Powershell Core (pwsh.exe)、Powershell (powershell.exe) 或 Windows 命令 shell ( cmd.exe)
  2. 确定要在何处创建符号 link:
    • 选择一个已经在你的 PATH 环境变量中的目录(使用 Powershell 中的 echo $env:PATHcmd.exe 中的 echo %PATH% 打印变量内容)
    • 将您喜欢的任何目录添加到 PATH 变量(见下文)
  3. 导航到您在上一步中选择的目录并在那里创建一个名为 python3.exe 的符号 link 指向 Python 3 可执行文件(target 参数) ,两个路径都可以是绝对路径或相对路径:

现在,如果您从任何目录执行 python3python3.exe,Windows 会在当前目录中搜索它,然后在您的 PATH 环境变量中搜索所有目录。它找到您创建的符号 link,将其“重定向”到 Python 3 可执行文件并 Windows 执行它。

备注

哪个版本执行python命令?

当安装了 Python 2 和 3 时,命令 python 正在执行什么 Python 版本,取决于 Python 目录在 PATH环境变量。

当您执行一个命令但在当前工作目录中找不到它时,Windows 遍历 PATH 变量中的所有目录,同时保持它们在那里列出的顺序并执行第一个名称与命令匹配的可执行文件(并停止搜索)。

因此,当您的 PATH 变量包含 Python 安装目录的顺序 c:\dev\python2\;c:\dev\python3;... 时,python 命令将在 [=] 中执行 python.exe 43=] 因为它是第一个找到的。

顺序取决于您安装两个 Python 版本的顺序。每个安装都会在 PATH 的开头添加(如果您选中该选项)其安装目录,因此当您仅执行 python 时,将执行最近安装的版本。当然,您可以手动重新排序。

pip 没有问题,因为已经有一个名为 pip3.exe 的可执行文件位于 Python 安装期间自动添加到 PATH 的目录中( <installation-root>\Scripts,所以只需对 Python 3 的点使用 pip3,对 Python 2 的点使用 pip/pip2

编辑环境变量

  1. 打开 Windows' 关于 对话框,方法是按 Win + Pause/Break 或右键单击 This PC 并选择 Properties
  2. 单击 右侧的 link 高级系统设置 打开 系统属性 对话框=]设置对话框
  3. 通过单击系统底部的环境变量...按钮打开环境变量对话框属性 对话框
  4. 在这里,您可以管理用户变量,如果您有管理员权限,还可以管理系统变量