在Windows 10/Pycharm中使用Vagrant从Python调用FastDowndown planner

2024-09-27 22:20:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用python脚本中的Vagrant调用FastDowndown planner

我尝试了os库,但失败了

然后我在子流程中尝试了不同的方法:

    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卡住了,这是不正确的,启动一个流浪环境需要很多时间

这是我的工作环境: Text

多谢各位

编辑:

我已经尝试了这些链接,但我无法让Vagrant选项出现在pycharm中: https://www.jetbrains.com/help/pycharm/vagrant-support.html#

https://medium.com/@krishna.yerramsetty/remote-python-development-environment-using-pycharm-and-vagrant-32f1ac3c66b8

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


Tags: theinpycmdliblinecallpycharm
1条回答
网友
1楼 · 发布于 2024-09-27 22:20:11

经过大量研究,我设法从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(我没有尝试过)

您可以使用子流程库而不是操作系统,并且可以将output字符串变量拆分为具有output=output.split()的字符串列表

我希望我能提供帮助,因为vagrant文档并不完整,而且Windows的在线示例也不多

相关问题 更多 >

    热门问题