Вызов двоичного файла C с ботом разногласия с питоном на Heroku - PullRequest
0 голосов
/ 11 апреля 2019

У меня есть вопрос, я кодировал только базового бота на python, одна из команд под названием «ascii» получает входные данные из ctx, а затем с помощью subproccess.py вызывает двоичный файл C, который в значительной степени просто записывает входные данные с помощью « # "и" ", все работает нормально, когда я запускаю его на моем компьютере, но я просто ставлю бот на heroku, и это не работает (другие команды работают), я вызываю его с

subprocess.check_output("ascii \"" + " ".join(text) + "\"", shell=True)

В логах я получаю Command 'ascii "input"' returned non-zero exit status 127. что из того, что я нашел, и что команда не была найдена, так что я думаю, мне придется добавить директорию к пути (например, / apps / bot / ascii или что-то в этом роде), но я не могу понять, что именно вставить там или если это даже проблема.

Есть идеи, как заставить это работать?

edit_1: я пытался изменить вызов функции на /app/ascii, который должен быть каталогом, который я думал, по крайней мере, но теперь он возвращает состояние выхода 126, то есть команда не является исполняемым

edit_2: Только что попробовал запустить ascii с консолью на heroku, сначала отказано в разрешении, но после того, как я дал ему разрешение, все заработало. Нужно ли как-то устанавливать глобальное разрешение для ascii? Как и в файле require.txt или как?

1 Ответ

0 голосов
/ 14 апреля 2019

Тааак, для тех, кто хотел бы делать такие вещи, я бы сказал, не .. У меня было много проблем с настройкой этого, но теперь, на самом деле, это работает хорошо, кажется, никаких проблем пока нет, но, оглядываясь назад, было бы намного быстрее, если бы я просто переписал файл .c в python Не так сложно, гораздо быстрее, в конце концов. Тем не менее, я расскажу вам, как я это сделал, и, следуя ему, вы можете заставить его работать довольно быстро.

К «учебнику»: Во-первых, вызов бинарного файла в том виде, в котором он у меня был, сработал отлично, никаких изменений для этого не требуется.

На github, из которого он был развернут, мне нужно было добавить, как обычно, с приложениями heroku, procfile (вы можете искать в интернете, почти одну строку кода, вызывающую рабочий, файл .py бота), требования. txt (где нужно было добавить нестандартные библиотеки, которые я использовал, discord и asyncio для меня) и runtime.txt (принудительно запускать python 3.6.8, на самом деле, вероятно, не нужно). Кроме того, makefile , который мне пришлось создать. Не забудьте загрузить все необходимые файлы .c и .h, которые вы хотите использовать. Это должно быть на github.

Теперь к героку:

сначала создайте новое приложение, я еще не подключил его к github. Затем я добавил C buildpack (это то, для чего предназначен make-файл), и добавил сборочный пакет python, который есть на heroku. Затем я вернулся к развертыванию и подключил github, включил автоматическое развертывание для правильной оценки и развернул. Теперь просто вернитесь к обзору, настройте dynos, и вы «увидите» только одного работника, того, которого вы добавили в Procfile. Активируйте его, и если я не забыл ни одного шага, тогда файл .c должен скомпилироваться с make и makefile и должен запускаться при вызове через python.

Теперь, когда я смотрю на это, похоже, что 20 минут работы лол, я потратил 2,5 дня, пытаясь заставить его работать ...

Ну, по крайней мере, теперь вам не нужно проходить через то, что я сделал, если кому-то когда-нибудь понадобится это:)

Если у вас есть еще вопросы, я постараюсь помочь, снять сообщение, здесь или раздор (мое имя точно такое же, как здесь, и останется таковым)

...