python - 在 Windows 10/Pycharm 中使用 Vagrant 从 Python 调用 FastDownward planner

标签 python pycharm subprocess vagrant

我正在尝试使用 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环境需要花费很多时间。

这是我的工作环境: Text

谢谢

编辑:

我已经尝试过这些链接,但无法使 Vagrant Option 出现在 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/

最佳答案

经过大量研究,我成功地从我的 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/

相关文章:

python - 我如何格式化命令参数,它们本身是一组带有 Python 子进程模块的命令?

python - python中列表之间映射的最快方法是什么

python - 给定一个邻接矩阵,如何用matplotlib画图?

python - 如何禁用GTK中的关闭按钮?

database - 使用 RubyMine 通过 Vagrant 连接到数据库

python - subprocess.check_output 更快的方法

c++ - lxml._ElementTree.getpath(element) 返回 "*"而不是非默认 namespace 中元素的标签名称

python - 在外部范围中定义的阴影名称有什么问题?

python-3.x - 在Pycharm Debug模式下, "step into my code"和 "step into"有什么区别

python - 无缓冲的子进程输出(最后一行缺失)