Проблемы с lavalink discord.py бот

#python #discord #bots #discord.py

#python #Discord #боты #discord.py

Вопрос:

Я пытаюсь реализовать музыкального бота на своем боте на основе https://github.com/stuyy/Lavalink-Discordpy-Example с помощью lavalink и dicord.py . Перед размещением на heroku я пытаюсь запустить его на своем компьютере, но у меня возникает эта ошибка:


 Ignoring exception in on_ready
Traceback (most recent call last):
  File "C:UsersgrmapAppDataLocalProgramsPythonPython37libsite-packagesdiscordextcommandsbot.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:UsersgrmapDesktopdiscor-bot_py3.6cogsmusic.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:UsersgrmapAppDataLocalProgramsPythonPython37libsite-packagesdiscordclient.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:UsersgrmapAppDataLocalProgramsPythonPython37libsite-packagesdiscordextcommandsbot.py", line 664, in load_extension
    self._load_from_module_spec(spec, name)
  File "C:UsersgrmapAppDataLocalProgramsPythonPython37libsite-packagesdiscordextcommandsbot.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 для создания pipenv в Windows 10.

Файлы в моем проекте

Вот что показывает замораживание pip:

 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, и проблема в том, что я установил python из среды anaconda, и по какой-либо причине, когда iIexecute файл вместо того, чтобы использовать версию среды python, он использовал python, установленный на моем компьютере, который был 3.7.2. @dzang былправильно.

Ответ №1:

Вам также необходимо установить привязки python pip install lavalink в той же среде, которую вы используете для проекта.

Редактировать:

хорошо, итак, вам нужно понять, как работают среды. по сути, проблема здесь в том, что вы установили lavalink его в одной среде, но затем используете другую среду для запуска своего кода. Как я это вижу? Поскольку в ошибке, которую я прочитал C:UsersgrmapAppDataLocalProgramsPythonPython37... , это означает, что вы используете установку Python, а не установку Anaconda.

В терминале вы можете проверить, какой python вы используете в Windows, введя where python .

При установке чего-либо с pip помощью вы должны убедиться, что используете pip.exe из среды, в которой хотите установить пакет, иначе интерпретатор его не найдет.

С помощью Anaconda вы можете создать среду conda create -n myenv python=3.7 и активировать ее conda activate myenv , а затем установить туда свои пакеты. Затем в PyCharm вам нужно будет выбрать правильный интерпретатор среды.

Я не знаком с pyenv, но в принципе это не нужно, если вы используете среду anaconda. Концепция та же, вам нужно активировать среду или напрямую указать на правильный pip.exe , который в вашем случае будет где-то внутри C:UsersgrmapAppDataLocalProgramsPythonPython37 .

Дело в том, что каждая среда имеет свой собственный python.exe pip.exe набор пакетов and и.

Комментарии:

1. Я установил его, я не знаю, есть ли способ показать это

2. вы можете проверить, с какими пакетами установлены pip freeze . Кроме того, что вы видите, когда запускаете терминал? python -c "import lavalink"

3. это слишком долго, но о lavalink он показывает lavalink==3.1.2

4. PS C:Users […]discor-bot_py3.6> обратная трассировка py -c «import lavalink» (последний последний вызов): файл «<string>», строка 1, в <module> Ошибка ModuleNotFoundError: нет модуля с именем ‘lavalink’

5. Я использую anaconda для создания pipenv в Windows 10