При использовании библиотеки Ruffus в Python 2.7 флаг just_print не работает
У меня есть конвейер ерша в Python 2.7, но когда я вызываю его с -n
или же --just_print
он по-прежнему выполняет все текущие задачи, а не просто печатает конвейер, как это должно быть. Я:
* нет -n
аргумент, который заменит встроенный (хотя у меня есть другие аргументы командной строки)
* есть куча функций с @transform()
или же @merge()
декораторов
* закончить трубопровод с run_pipeline()
вызов
Кто-нибудь еще испытывал эту проблему? Большое спасибо!
1 ответ
Начиная с версии 2.4, вы можете использовать встроенный ruffus.cmdline
который хранит соответствующие флаги через cmdline.py
модуль, который использует argparse
, например:
from ruffus import *
parser = cmdline.get_argparse(description='Example pipeline')
options = parser.parse_args()
@originate("test_out.txt")
def run_testFunction(output):
with open(output,"w") as f:
f.write("it's working!\n")
cmdline.run(options)
Затем запустите ваш конвейер из терминала с помощью команды:
python script.py --verbose 6 --target_tasks run_testFunction --just_print
Если вы хотите сделать это вручную вместо этого (что необходимо для более старой версии ruffus), вы можете позвонить pipeline_printout()
скорее, чем pipeline_run()
, с помощью argparse
таким образом --just_print
флаг приводит к соответствующему вызову, например:
from ruffus import *
import argparse
import sys
parser = argparse.ArgumentParser(description='Example pipeline')
parser.add_argument('--just_print', dest='feature', action='store_true')
parser.set_defaults(feature=False)
args = parser.parse_args()
@originate("test_out.txt")
def run_testFunction(output):
with open(output,"w") as f:
f.write("it's working!\n")
if args.feature:
pipeline_printout(sys.stdout, run_testFunction, verbose = 6)
else:
pipeline_run(run_testFunction, verbose = 6)
Затем вы должны выполнить команду как:
python script.py --just_print