【问题标题】:Running python subprocess with ubuntu terminal on windows在 Windows 上使用 ubuntu 终端运行 python 子进程
【发布时间】:2021-11-26 01:00:01
【问题描述】:

有没有办法在Windows下运行python模块subprocess,但是使用安装在wsl中的Ubuntu终端。

我的第一个猜测是通过函数中的 excutable 关键字来提示 ubuntu 终端:

subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, capture_output=False, shell=False, cwd=None, timeout=None, check=False, encoding=None, errors=None, text=None, env=None, universal_newlines=None, **other_popen_kwargs)

我需要能够使用我的 python 程序运行 OpenFOAM 命令的功能,而无需将我的 python 代码迁移到 Linux 系统。

编辑: 进一步澄清我的问题:

我有一个运行着各种 python 代码的 GUI。从那里我需要运行 OpenFOAM,它只在 Linux 下可用。为了克服这个限制,我使用了 Ubuntu (WSL)。我需要一个 WSL shell 在后台运行,执行 linux 命令并设置 OpenFOAM 所需的环境。

手动使用 Ubuntu,我启动终端并源到 .bashrc 文件,其中设置了所有环境变量。从那里我可以使用 OpenFoam 命令来运行模拟。直接从 python 代码执行这些步骤会很棒。

【问题讨论】:

  • 我怀疑你想从 Windows 中运行 WSL 的东西,而不是加载终端本身。
  • @2e0byo 感谢您的链接。也许你可以帮助我更进一步。当使用终端正常工作时,我会加载一个 .bashrc 文件来设置 OpenFOAM 所需的环境变量,使用命令 source /opt/openfoam8/etc/bashrc。是否可以使用“wsl.exe”命令设置临时环境,还是只能执行单个命令?
  • 您好,欢迎来到 Stack Overflow。有几个问题可以帮助我理解您的用例 - 您的意思是要在 WSL 下运行 Windows Python subprocess 模块吗?你说“没有将我的 Python 代码迁移到 Linux 系统。” 那么你想在 WSL 中运行什么?您是否只想要 WSL“终端”(我认为您的意思是“shell”),同时仍在使用您的 Windows Python 代码?
  • 我有一个运行着各种 python 代码的 GUI。从那里我需要运行 OpenFOAM,它只在 Linux 下可用。为了克服这个限制,我使用了 Ubuntu (WSL)。所以是的,我需要一个 WSL shell 在后台运行,执行 linux 命令并设置 OpenFOAM 所需的环境。

标签: python windows subprocess windows-subsystem-for-linux openfoam


【解决方案1】:

希望这可以帮助其他人解决这个问题:

我解决这个问题的方法是,我在我的 wsl 文件中创建一个 .sh 文件,我使用 wsl chmod -x filename.sh 编译,然后使用 source filename.sh 运行它。

在我的 .sh 文件中,我通过采购我想在我的脚本中使用的 OpenFoam 版本的 bashrc 文件来加载 OpenFoam 的环境变量。从那里,我可以定义我通常在终端中执行的每个步骤。 (类似于 OpenFoam 示例中的 Allrun 文件)

【讨论】:

    猜你喜欢
    • 2015-10-18
    • 2020-04-04
    • 2010-10-29
    • 2013-11-12
    • 1970-01-01
    • 2020-07-14
    • 1970-01-01
    • 2018-04-12
    • 1970-01-01
    相关资源
    最近更新 更多