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

Posted

技术标签:

【中文标题】Bash:Python3:找不到命令(Windows,discord.py)【英文标题】:Bash: Python3: command not found (Windows, discord.py) 【发布时间】:2017-04-16 07:05:59 【问题描述】:

我一直在尝试配置 discord API discord.py 并在我的服务器上运行 Red-MusicBot。我已经安装了 Python 3.5,并添加了 PATH 变量(我在安装中单击了“将 Python 添加到 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]

前两行完美运行,但第三行返回:

bash: python3: command not found

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

我正在运行 Windows 10、64 位。

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

【问题讨论】:

git-bashbash 是两个完全不同的程序。另外,看看this question 你确定它叫python3 而不仅仅是python @Aserre 我查看了它并运行了“env|grep PATH”命令。它返回了上面在常规 PATH 部分中提到的两个 python 路径。 python 可执行文件有时在某些平台上称为python3,其中默认 (python) 是旧的 python 2. OS X,例如。 不!您安装了 3.5,这是当前的稳定版本。你在 Windows 上,所以我不希望那里已经有 python。在许多基于 UNIX(包括 Linux 和 OS X)的系统上,系统实用程序使用 python 2,更改它可能会对这些平台产生不良后果,因此命名为“python3”。在 Windows 上你应该没问题 - Windows 上还有其他问题,但除非你尝试使用多个 python 版本,否则你不会得到这些问题。 【参考方案1】:

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

【讨论】:

这帮助我把它复制粘贴到同一个地方并将其重命名为“python3.exe”,现在在命令提示符下你可以检查 python3 2019 年为我工作 在不到 10 秒内修复。欣赏它! Win10、VS 代码、Python 3.8 这样一个简单而漂亮的解决方案 这是一个非常糟糕的建议,如果您想避免将来出现问题和浪费时间,请不要这样做。这很糟糕,因为每次将 Python 升级到新版本时都必须重复它。您很可能会忘记它,最终会得到一个损坏或行为怪异的 Python。其他答案中有更好的建议,请检查它们。例如,您可以按照此答案中的建议创建 python3.exe 文件,而不是 Python 解释器的副本,it's just a symbolic link(指向它的指针)。【参考方案2】:

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

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

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

【讨论】:

请问,我已经安装并检查了我的 Windows 10 系统中是否有 Python 版本 3.6.5(使用 python --version 从 cmd 检查)。现在我需要运行一个 python 文件,正如作者所说,应该使用python3.6 baseline.py 来执行它。我使用 git bash 运行代码,但是在输入上述命令时,我收到错误 bash: python3.6: command not found。如果我只使用python baseline.py,它似乎在尝试运行..尝试以这种方式执行它是错误的吗? 您只需要在 Windows 上运行 python baseline.py。这应该足够了。【参考方案3】:

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

$ python --version
Python 2.7.15

但是如果我使用 py

$ py --version
Python 3.8.1

不知道为什么,但是成功了

【讨论】:

我猜是因为你同时安装了 pythion2 和 python3。【参考方案4】:

不要复制可执行文件,而是添加一个充当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

【讨论】:

我必须将“py -3 $*”行更改为“python $*”以使其与 conda envs 一起使用。 文件 "", 第 1 行 if [[ "$OSTYPE" =~ ^msys ]];然后 ^ SyntaxError: invalid syntax >>> ..【参考方案5】:

在 Windows 10 上,您可能会发现 pypythonpython3 不适用的情况下工作。

【讨论】:

【参考方案6】:

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

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

解决方案:符号链接python3.exe

只需在PATH 环境变量中的目录中创建一个名为python3.exe 的符号链接(但它不是 在Python 3 安装目录下)指向Python 3 可执行文件@ 987654329@。即使您升级 Python,符号链接仍保留在那里并始终指向正确的可执行文件(由于它位于 Python 3 安装目录之外,因此即使删除了过时 Python 的整个目录并在其中放置了新 Python,它也不会受到影响) .

很容易准备:

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

    在 Powershell 中,使用 New-Item command with the -Type SymbolicLink option:

    New-Item -Type SymbolicLink -Path python3.exe -Target c:\<Python3-installation-directory>\python.exe

    cmd.exe 中,使用mklink command:

    mklink python3.exe c:\<Python3-installation-directory>\python.exe

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

注意事项

哪个版本执行python命令?

同时安装 Python 2 和 3 时,命令 python 正在执行的 Python 版本取决于 PATH 环境变量中 Python 目录的顺序。

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

因此,当您的PATH 变量包含按c:\dev\python2\;c:\dev\python3;... 顺序排列的Python 安装目录时,那么python 命令会执行c:\dev\python2\ 中的python.exe,因为它首先被发现。

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

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

编辑环境变量

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

【讨论】:

【参考方案7】:

上面的解决方案都不适合我,但是,当我写 python3 -m pip install discord.py 而不是写 C:\InstallPath\python.exe -m pip install discord.py 时,我能够使用 Python 3.7 获得成功

这可能有效,因为虽然命令 python3 在 cmd 中不可用,但 python 核心文件的路径有效,并且像 python3 命令一样接受参数。

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

【讨论】:

以上是关于Bash:Python3:找不到命令(Windows,discord.py)的主要内容,如果未能解决你的问题,请参考以下文章

终端:-bash:'别名:找不到命令

Git Bash bash:打开:找不到命令

bash:mkvirtualenv:找不到命令

bash:tslint:找不到命令

-bash:协议:找不到命令

Bash:sudo:找不到命令