【问题标题】:executing os.system python commands after invoking a singularity exec command via os.system通过 os.system 调用奇异 exec 命令后执行 os.system python 命令
【发布时间】:2021-09-20 17:03:55
【问题描述】:

所以我有一个 python 程序,它通过 os.system 在 .sif 文件上调用奇异 exec。然后在我程序的下一行,我再次使用 os.system 来尝试运行 python 脚本。我以为这会启动奇点,然后从中运行我的脚本,但是目前它只运行 exec 命令,将我带入容器,然后挂起(它不执行 python 命令)。

有人对此问题有任何建议或经验吗?

谢谢。

【问题讨论】:

  • 一个好问题包括minimal reproducible example——其他人可以运行以查看问题或修改以测试其修复的最短代码。
  • 也就是说——一般而言,根本不应该使用os.system()subprocess 模块提供了更多的控制,并抛弃了一些融入os.system() 设计的错误决策(就像C 中system() 函数的设计一样,这同样糟糕)。负责任的 C 程序员不再使用system()。负责任的 Python 程序员也不应该使用os.system()

标签: python os.system singularity-container


【解决方案1】:

Singularity exec 运行单个指定命令,它不会将执行环境更改为奇异图像的执行环境。

如果您需要交互式会话,请使用:singularity shell my_image.sif

如果您需要运行多个命令,请编写一个 shell 脚本并使用它:singularity exec my_image.sif my_script.sh

或者,使用奇异性来运行您的 python 脚本。然后一切都将在映像而不是主机的上下文中完成。

【讨论】:

    最近更新 更多