Не уверен, должен ли я спрашивать об этом здесь или здесь о переполнении стека Linux, но вот оно.
Я относительно новичок в python, и я изо всех сил пытался заставить этот скрипт python автоматически запускаться на машине aws. У меня есть два модуля, которые мне нужно установить: «discord.py» и «watson-cloud-developer». Pip3 устанавливает вышеупомянутые модули без ошибок. При попытке запустить службу, которая запускает скрипт, который запускает скрипт Python (должен любить systemd), я получаю сообщение об ошибке, сообщающее мне, что модуль разногласий не установлен, см. ниже.
● discordbot.service
Loaded: loaded (/etc/systemd/system/discordbot.service; static; vendor preset: enabled)
Active: failed (Result: exit-code) since Sun 2019-03-03 17:16:00 UTC; 6s ago
Process: 30567 ExecStart=/usr/local/sbin/startbot.sh (code=exited, status=1/FAILURE)
Main PID: 30567 (code=exited, status=1/FAILURE)
Mar 03 17:16:00 ip-172-31-46-72 systemd[1]: Started discordbot.service.
Mar 03 17:16:00 ip-172-31-46-72 startbot.sh[30567]: Traceback (most recent call last):
Mar 03 17:16:00 ip-172-31-46-72 startbot.sh[30567]: File "/home/ubuntu/discordBot/main.py", line 1, in <module>
Mar 03 17:16:00 ip-172-31-46-72 startbot.sh[30567]: import discord
Mar 03 17:16:00 ip-172-31-46-72 startbot.sh[30567]: ModuleNotFoundError: No module named 'discord'
Mar 03 17:16:00 ip-172-31-46-72 systemd[1]: discordbot.service: Main process exited, code=exited, status=1/FAILURE
Mar 03 17:16:00 ip-172-31-46-72 systemd[1]: discordbot.service: Failed with result 'exit-code'.
Python3 подтверждает, что Discord установлен
Python 3.6.7 (default, Oct 22 2018, 11:32:17)
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import discord
>>>
Я более чем счастлив предоставить любую дополнительную информацию.
РЕДАКТИРОВАНИЕ:
оказание услуг:
[Service]
ExecStart=/usr/local/sbin/startbot.sh
баш скрипт:
#!/bin/bash
python3 /home/ubuntu/discordBot/main.py
питон скрипты:
import json
from watson_developer_cloud import VisualRecognitionV3
visual_recognition = VisualRecognitionV3(
"2018-03-19",
iam_apikey="{api-key}")
def ReturnWatsonResults(urlInput):
classes_result = visual_recognition.classify(url=urlInput).get_result()
imageResults = dict()
for images in classes_result['images'][0]['classifiers'][0]['classes']:
imageResults[images['class']]=str(images['score'] * 100)
return imageResults
import discord
import watson
from discord.ext.commands import Bot
TOKEN = '{api-key}'
BOT_PREFIX = ("!", "$")
client = Bot(command_prefix=BOT_PREFIX)
@client.command(name="Memealyze",
description="Send your favorite meme and the boys at IBM will get to work telling you what they see",
brief="Neural network put to good use",
pass_context=True)
async def GetMemeContents(context):
await client.say("Sending image to the mothership, hold tight")
messageContent = ""
imageUrl = str(context.message.attachments[0]['url'])
resultDict = watson.ReturnWatsonResults(imageUrl)
for key,val in resultDict.items():
messageContent += (key + ":" + val + "%" + "\n")
await client.say("Done, the boys at IBM said they found this:\n" + messageContent)
client.run(TOKEN)
Я знаю, что сценарии Python не очень хорошо написаны, но они работают, текущая заминка в головокружении заключается исключительно в том, где pip устанавливает модули, по той или иной причине они не могут быть доступны при запуске systemd .
#!/bin/bash python3 /home/ubuntu/discordBot/main.py
Настолько просто, насколько это возможно, не знаю, почему переполнение стека не регистрирует его, но будьте уверены, что после#!/bin/bash
есть новая строка - person Nevo   schedule 03.03.2019