#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