簡體   English   中英

在Heroku上使用python discord bot調用C二進制文件

[英]Calling a C binary with python discord bot on Heroku

我有一個問題,我編寫了一個基本的python bot,其中一個名為“ascii”的命令從ctx獲取輸入,然后使用subproccess.py調用C二進制文件,這幾乎只是用“#”寫入輸入, “”,當我在我的電腦上運行它時,一切正常,但我只是將機器人放在heroku上,這不起作用(其他命令工作),我稱之為

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

在日志中,我得到Command 'ascii "input"' returned non-zero exit status 127.這是我發現的,並且找不到該命令,所以我想我必須在路徑中添加一個directiory(比如/ apps / bot / ascii或者其他什么東西)但是我無法弄清楚究竟要放在那里或者這是否是問題。

任何想法如何使其工作?

edit_1:我試圖將函數的調用更改為/app/ascii ,這應該是我至少想到的目錄,但現在它返回退出狀態126,這是命令不是可執行文件

edit_2:剛嘗試在heroku上使用控制台運行ascii,在第一個權限被拒絕時,但在我給它許可之后,它運行了。 我是否需要以某種方式為ascii設置全局權限? 就像在requirements.txt中那樣?

Sooo,對於任何想做這種事情的人,我會說,不要......我在設置這方面遇到了很多麻煩,但是現在,它實際上看起來很好,沒有問題所以到目前為止,如果我只是將.c文件重新編寫成python,那將會快得多,而不是那么困難,最后要快得多。 也就是說,我會告訴你我是如何使它工作的,並且遵循它,你可以讓它工作得相當快。

對於“教程”:首先,調用二進制文件,因為我在帖子中有完美的工作,不需要進行任何更改。

在部署它的github上我需要按照慣例添加一個procfile(你可以在互聯網上搜索,幾乎一行代碼調用worker,.py bot文件),requirements.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天試圖讓它工作......

好吧,至少現在你不必經歷我所做的事情,如果有人需要這樣做:)

如果您還有其他問題,我會嘗試提供幫助,拍攝留言,此處或不和(我的姓名與此處完全相同,並將繼續保留)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM