这是我的文件的结构:
requirements.txt
Procfile
Chess/
-- lichess-bot/
-- lichess-bot.py
-- config.yml
-- (many other files related to lichess-bot.py)
负责在config.py
中打开YAML的部分:
def load_config(config_file):
with open(config_file) as stream:
try:
CONFIG = yaml.load(stream)
except Exception as e:
print("There appears to be a syntax problem with your config.yml")
raise e
在lichess-bot.py
中,这里是config.yml
的调用:
CONFIG = load_config(args.config or "./config.yml")
我需要执行的命令是
chmod +x ./engines/stockfish_10_x64
python lichess-bot.py -u
我在Heroku bash中尝试过此操作:python ./chess/lichess-bot/lichess-bot.py -u
,但它返回了
FileNotFoundError:[错误2]没有这样的文件或目录:'./config.yml'
我尝试了这个Procfile
:
worker: cd chess
worker: cd lichess-bot
worker: chmod +x ./engines/stockfish_10_x64
worker: python lichess-bot.py -u
但是Heroku无法识别它。
如果我手动执行此操作:
~ $ cd chess
~/chess cd lichess-bot
~/chess/lichess-bot python lichess-bot.py -u
效果完美
如何从Procfile
访问目录,然后执行文件而没有错误?
答案 0 :(得分:1)
该代码默认为当前目录中名为config.yml
的配置文件:
CONFIG = load_config(args.config or "./config.yml")
您可以将config.yml
移至存储库的根目录,也可以提供args.config
。看来可以使用--config
来完成。
您的Procfile
应该只定义流程类型。它们不是脚本,并且不应包含许多“步骤”。像
worker: python lichess-bot.py --config chess/lichess-bot/config.yml -u
应该可以工作(假设您的目录实际上叫chess/
而不是Chess/
)。如果需要使引擎可执行,请考虑在本地执行并将其提交为可执行文件。