我正在尝试使用 python 脚本中的 Vagrant 来调用 FastDownward planner。
我尝试过操作系统库但失败了。
然后我尝试了不同的方法,例如子流程:
cmd = ['downward/fast-downward.py', "--alias", "lama-first", "/vagrant/domain.pddl", "/vagrant/problem.pddl"]
retcode = subprocess.call(cmd)
print(retcode)
它输出:
Traceback (most recent call last):
File "C: / ... .py", line 124, in
main (sys.argv [1:]) File "C: / ... .py", line 111, in main
retcode = subprocess.call (cmd)
File "C: \ .... \ Anaconda3 \ lib \ subprocess.py", line 323, in call
with Popen (* popenargs, ** kwargs) as p:
File "C: \ ...... \ Anaconda3 \ lib \ subprocess.py", line 775, in init restore_signals, start_new_session)
File "C: \ ..... \ Anaconda3 \ lib \ subprocess.py", line 1178, in _execute_child startupinfo)
FileNotFoundError: [WinError 2] Cannot find the specified file from the system
我也尝试过:
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)
但是这些卡在ssh上并且无法正确,启动vagrant环境需要花费很多时间。
这是我的工作环境:
谢谢
编辑:
我已经尝试过这些链接,但无法使 Vagrant Option 出现在 pycharm 中: https://www.jetbrains.com/help/pycharm/vagrant-support.html#
最佳答案
经过大量研究,我成功地从我的 python 脚本中直接运行 ssh 命令来 vagrant。在本例中,我运行快速向下规划器:
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;...'
判断 from this answer (我还没试过)。
您可以使用subprocess库而不是os,并且可以将output
字符串变量拆分为带有output的字符串列表=output.split()
我希望能有所帮助,因为 vagrant 文档并不完整,而且 Windows 上的在线示例也不多
关于python - 在 Windows 10/Pycharm 中使用 Vagrant 从 Python 调用 FastDownward planner,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60469307/