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

Yak*_*an3 5 pip git-bash python-3.5 discord

我一直在尝试配置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\
Run Code Online (Sandbox Code Playgroud)

这些是唯一与Python相关的.现在,作为discord.py安装过程的一部分,它希望我在Git Bash中运行此命令:

$ git clone https://github.com/Rapptz/discord.py
$ cd discord.py
$ python3 -m pip install -U .[voice]
Run Code Online (Sandbox Code Playgroud)

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

bash: python3: command not found
Run Code Online (Sandbox Code Playgroud)

我还从GitHub克隆了pip作为一个尝试修复,虽然python安装网站说它包装3.5.

我正在运行Windows 64,64位.

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

小智 17

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

$ python --version
Python 2.7.15
Run Code Online (Sandbox Code Playgroud)

但如果我使用 py

$ py --version
Python 3.8.1
Run Code Online (Sandbox Code Playgroud)

不知道为什么,但它有效

  • 我猜这是因为你同时安装了 pythion2 和 python3 。 (2认同)

Pra*_*bah 16

在python的installed("c:\\Installationpath\Python3.6.0")路径中你会发现"python.exe",只需在同一个地方复制粘贴并将其重命名为"python3.exe",现在在命令提示符下你可以检查python3命令应该显示你的python安装.

  • 2019 年为我工作 (2认同)
  • 这是一个非常糟糕的建议,如果您想避免将来出现问题和浪费时间,请不要这样做。这很糟糕,因为每次将 Python 升级到新版本时都必须重复它。您很可能会忘记它,并且最终会得到一个损坏的或行为怪异的 Python。其他答案里有更好的建议,可以参考一下。例如,您可以按照此答案中的建议创建“python3.exe”文件,但不是Python解释器的副本,[它只是一个符号链接](/sf/answers/4721215971/) (一个指针)指向它。 (2认同)

cda*_*rke 12

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

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

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


Daw*_*žan 11

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

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

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

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

准备起来非常简单:

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

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

    • 在 中cmd.exe,使用mklink命令

      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变量包含顺序为 Python 安装目录时c:\dev\python2\;c:\dev\python3;...,该python命令将python.exe在 中执行c:\dev\python2\,因为它是最先找到的。

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

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

编辑环境变量

  1. 按+或右键单击此电脑并选择属性,打开 Windows 的“关于”对话框WinPause/Break
  2. 单击“设置”对话框右侧的“高级系统设置”链接,打开“系统属性”对话框
  3. 单击“系统属性”对话框底部的“环境变量...”按钮,打开“环境变量”对话框
  4. 在这里,您可以管理用户变量,如果您具有管理员权限,则还可以管理系统变量


bim*_*las 5

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

带有#!python3shebang 行的Python 3 脚本将无法运行,因为python3.exe在 Windows 上不存在 - 它可以通过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
Run Code Online (Sandbox Code Playgroud)