首页 > 解决方案 > lavalink discord.py 机器人的问题

问题描述

我正在尝试基于https://github.com/stuyy/Lavalink-Discordpy-Examplelavalinkdicord.py在我的机器人上实现一个音乐机器人。在将它托管在heroku上之前,我试图在我的计算机上运行它,但我遇到了这个错误:


Ignoring exception in on_ready
Traceback (most recent call last):
  File "C:\Users\grmap\AppData\Local\Programs\Python\Python37\lib\site-packages\discord\ext\commands\bot.py", line 607, in _load_from_module_spec
    spec.loader.exec_module(lib)
  File "<frozen importlib._bootstrap_external>", line 728, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "C:\Users\grmap\Desktop\discor-bot_py3.6\cogs\music.py", line 2, in <module>     
    import lavalink
ModuleNotFoundError: No module named 'lavalink'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\Users\grmap\AppData\Local\Programs\Python\Python37\lib\site-packages\discord\client.py", line 312, in _run_event
    await coro(*args, **kwargs)
  File "index.py", line 95, in on_ready
    bot.load_extension('cogs.music')
  File "C:\Users\grmap\AppData\Local\Programs\Python\Python37\lib\site-packages\discord\ext\commands\bot.py", line 664, in load_extension
    self._load_from_module_spec(spec, name)
  File "C:\Users\grmap\AppData\Local\Programs\Python\Python37\lib\site-packages\discord\ext\commands\bot.py", line 610, in _load_from_module_spec
    raise errors.ExtensionFailed(key, e) from e
discord.ext.commands.errors.ExtensionFailed: Extension 'cogs.music' raised an error: ModuleNotFoundError: No module named 'lavalink'

这些是我项目中的文件,机器人使用的是 python 3.6.12。我正在使用 Anaconda 在 Windows 10 上创建 pipenv。

我的项目中的文件

这是显示 pip freeze 的内容:

aiohttp==3.6.2
appdirs==1.4.3
async-timeout==3.0.1
attrs==20.2.0
certifi==2020.6.20
cffi==1.14.3
chardet==3.0.4
discord.py==1.5.0
distlib==0.3.0
filelock==3.0.12
idna==2.10
idna-ssl==1.1.0
importlib-metadata==1.5.0
importlib-resources==1.3.1
lavalink==3.1.2
multidict==4.7.6
pipenv==2018.11.26
pycparser==2.20
PyNaCl==1.3.0
six==1.14.0
typing-extensions==3.7.4.3
virtualenv==20.0.10
virtualenv-clone==0.5.3
wincertstore==0.2
yarl==1.6.0
zipp==3.1.0

我已经在我的电脑上安装了lavalink,但由于某种原因它不起作用。知道它可能是什么吗?提前致谢。

[编辑] 我对其他 python 脚本也有类似的问题,问题是我在 anaconda 环境中安装了 python,并且出于任何原因,当 iIexecute 文件而不是使用 python 环境版本时,它使用了安装的 python我的电脑是 3.7.2。@dzang 是对的。

标签: pythondiscordbotsdiscord.py

解决方案


您还需要pip install lavalink在用于项目的同一环境中安装 python 绑定。

编辑:

好的,所以你需要了解环境是如何工作的。基本上这里的问题是您安装lavalink在一个环境中,但是您正在使用另一个环境来运行您的代码。我怎么看这个?因为在我读到的错误中C:\Users\grmap\AppData\Local\Programs\Python\Python37...,这意味着您正在使用 Python 安装,而不是 Anaconda 安装。

在终端中,您可以通过键入来检查您在 Windows 中使用的 Python where python

当你安装一些东西时,pip你应该确保你正在使用pip.exe你想要安装包的环境,否则解释器将找不到它。

使用 Anaconda,您可以创建环境conda create -n myenv python=3.7 并使用它激活它conda activate myenv 然后您可以在那里安装您的软件包。在 PyCharm 中,您需要选择正确的环境解释器。

我不熟悉 pyenv,但如果你使用 anaconda 环境,基本上就不需要了。不过概念是一样的,您需要激活一个环境或直接指向正确的 pip.exe,在您的情况下,它将位于C:\Users\grmap\AppData\Local\Programs\Python\Python37\.

就是这样,每个环境都有自己的python.exepip.exe一组包。


推荐阅读