Heroku Procfile不进入目录?

时间:2019-06-16 22:17:04

标签: python heroku procfile

这是我的文件的结构:

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")

我需要执行的命令是

  1. chmod +x ./engines/stockfish_10_x64
  2. 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访问目录,然后执行文件而没有错误?

1 个答案:

答案 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/)。如果需要使引擎可执行,请考虑在本地执行并将其提交为可执行文件。