Вызвать FastDownward планировщик от Python с Vagrant в Windows 10 / Pycharm - PullRequest
1 голос
/ 29 февраля 2020

Я пытаюсь вызвать планировщик FastDownward с использованием Vagrant из моего python скрипта.

Я пробовал библиотеку os, но не смог.

Затем я попробовал разные вещи с подобными подпроцессами:

    cmd = ['downward/fast-downward.py', "--alias", "lama-first", "/vagrant/domain.pddl", "/vagrant/problem.pddl"]
    retcode = subprocess.call(cmd)

    print(retcode)

выводит:

Traceback (последний вызов был последним):

Файл "C: / ... .py", строка 124, в

main (sys.argv [1:]) Файл "C: / ... .py", строка 111, в основном

retcode = subprocess.call (cmd)

Файл "C: \ .... \ Anaconda3 \ lib \ subprocess.py", строка 323, в вызовите

с Popen (* popenargs, ** kwargs) как p:

Файл "C: \ ...... \ Anaconda3 \ lib \ subprocess.py", строка 775, в init restore_signals, start_new_session)

Файл "C: \ ..... \ Anaconda3 \ lib \ subprocess.py", строка 1178, в _execute_child startupinfo)

FileNotFoundError: [WinError 2] Не удается найти указанный файл из системы

Я также пробовал, что:

    retcode = subprocess.call("vagrant up")
    retcode = subprocess.call("vagrant ssh")
    cmd = ['downward/fast-downward.py', "--alias", "lama-first", "/vagrant/domain.pddl", "/vagrant/problem.pddl"]
    retcode = subprocess.call(cmd)

    print(retcode)

Но они застряли на s sh и это не может быть правильно, для запуска бродячей среды требуется много времени.

Это моя рабочая среда: text

Спасибо

РЕДАКТИРОВАТЬ:

Я пробовал эти ссылки, но я не могу сделать Vagrant Option появляться в pycharm: https://www.jetbrains.com/help/pycharm/vagrant-support.html#

https://medium.com/@krishna.yerramsetty / дистанционный - python - среда разработки с использованием pycharm-and-vagrant-32f1ac3c66b8

https://developer.rackspace.com/blog/a-tutorial-on-application-development-using-vagrant-with-the-pycharm-ide/

1 Ответ

0 голосов
/ 01 марта 2020

После долгих исследований мне удалось напрямую запустить команду s sh для перехода из моего сценария python. В этом случае я запускаю планировщик быстрого понижения:

output=os.popen("vagrant ssh default -- -t 'downward/fast-downward.py --alias lama-first /vagrant/domain.pddl /vagrant/problem.pddl'").read()

. Приведенное выше решение сохраняет выходную строку в переменной output. Вы можете использовать это, чтобы просто напечатать вывод на терминал:

os.system("vagrant ssh default -- -t 'downward/fast-downward.py --alias lama-first /vagrant/domain.pddl /vagrant/problem.pddl'")

, и вы можете запустить несколько команд после -t, разделяя их точкой с запятой 'command1; command2;...', судя из этого ответа (я этого не пробовал).

Вы можете использовать библиотеку subprocess вместо os , и вы можете разбить строковую переменную output на список строк с output=output.split()

Надеюсь, я помогу, так как документация по бродяге не завершена и в Интернете не так много примеров для Windows

...