【发布时间】:2019-09-02 09:22:12
【问题描述】:
我有一个问题,我只编写了一个基本的 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:刚尝试在heroku上使用控制台运行ascii,起初权限被拒绝,但在我给予权限后,它就起作用了。我是否需要以某种方式将全局权限设置为 ascii?像 requirements.txt 什么的?
【问题讨论】:
-
您尝试运行的命令是
ascii?那有什么作用?你是从哪里弄来的? (也许可以使用它;知道它是什么以及它来自哪里将有助于确定答案。) -
这是我作为学校作业编写的一个小程序,它所做的几乎就是接受我调用它的输入并以更大的形式打印出来,仅使用 # 和空格,它将它打印到标准输出,所以这就是为什么我有 check_output 的子进程,我认为这没有问题,因为我用批处理文件在我的计算机上运行了机器人并且一切正常,只是调用 heroku 可能是不同
-
ascii是否已提交到您的 Git 存储库?如果是这样,你在哪里编译的? -
代码是在我的电脑上编译的,然后 .out 二进制文件被提交到 github。 (在我的电脑上工作的相同二进制文件)
-
您的本地计算机上的操作系统是什么?一般来说,在一种类型的机器(操作系统和 CPU 架构)上编译的 C 代码不会在另一种机器上运行。此外,您说“.out 二进制文件”,但您的命令是
ascii。应该是ascii.out/ 是否需要将文件重命名为ascii?
标签: python heroku bots discord discord.py