我有一个问题,我只编写了一个基本的python机器人程序,其中一个名为“ ascii”的命令从ctx中获取输入,然后使用subproccess.py调用C二进制文件,这几乎就是用“ #“和”“,当我在PC上运行时一切正常,但是我只是将bot放在了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中一样?
答案 0 :(得分:0)
好, 对于任何想做这种事情的人,我都不会。 我在设置此程序时遇到了很多麻烦,但是现在看来它确实运行良好,到目前为止,还没有问题,但是回头看,如果我将.c文件重新写入python会更快。 ,没有那么困难,最终速度要快得多。 就是说,我将告诉您我是如何工作的,通过关注它,您可能会使其运行得相当快。
转到“教程”: 首先,按照我在帖子中的描述调用二进制文件是完美的,不需要做任何更改。
在部署它的github上,我需要像往常一样在heroku应用程序中添加一个procfile(您可以在Internet上搜索,几乎一行代码调用了worker,.py bot文件),要求。 txt(必须添加我曾经使用过的非标准库,discord和asyncio对我来说)和runtime.txt(强制它运行python 3.6.8,实际上可能不需要)。另外,我必须创建一个makefile。别忘了上传所有想要使用的.c和.h文件。应该在github上就可以了。
现在进入heroku:
首先创建一个新应用,但尚未将其连接到github。然后我添加了一个 C buildpack(这是makefile的目的),并添加了heroku上的python buildpack。然后我回去部署并连接github,启用自动部署以进行良好的测量并进行了部署。现在,回到概述,配置dynos,您应该“只”看到一个工作程序,即您在Procfile中添加的一个工作程序。激活它,如果我没有忘记任何步骤,那么.c文件应该使用make和makefile进行编译,并且在被python调用时应该能够运行。
现在,我看着它,看起来工作了20分钟,我花了大约2.5天的时间试图使其正常工作...
好吧,至少现在您不必经历我所做的事情,如果有人需要这样做的话:)
如果您还有其他问题,我会尽力帮助您,在此处或不和谐处留言(我的名字与此处完全相同,并且将保持不变)