首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从python子进程模块启动模块shell命令

从python子进程模块启动模块shell命令
EN

Stack Overflow用户
提问于 2011-08-19 22:37:28
回答 3查看 3.2K关注 0票数 1

我正在尝试运行vnc服务器,但为了首先运行,我需要运行'module load vnc‘。

如果我在加载的bash shell中调用which module,那么在not found中的命令是路径,但同时它是可用的。看起来这个命令是内置的。

换句话说,看起来我需要一次执行两个命令,并且我正在编写脚本从module load vnc;vncserver :8080 -localhost启动它。我在subprocess.Popen上尝试过不同的变体,比如

代码语言:javascript
复制
subprocess.Popen('module load vnc;vncserver :8080 -localhost', shell=True) 

返回127退出代码或command not found

代码语言:javascript
复制
subprocess.Popen('module load vnc;vncserver :8080 -localhost', shell=False)

正在显示

代码语言:javascript
复制
File <path>/subprocess.py line 621, in \__init__    
                                   errread, errwrite)
OSError: [Errno 2] No such file or directory.

如果我指定shell=True,它将从/bin/sh执行,但我需要从/bin/bash执行它。

指定executable='/bin/bash'没有帮助,因为它加载新的bash shell,但它作为字符串启动,而不是作为进程,即我在ps列表中看到与我想要启动的命令完全相同的命令。

您能建议如何从子进程模块启动此命令吗?是否可以从shell=False开始

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-19 23:23:13

环境模块通常只为你修改几个环境变量。通常可以完全跳过module load whatever步骤,只需不依赖于这些模块。我推荐

代码语言:javascript
复制
subprocess.Popen(['/possibly/path/to/vncserver', ':8080', '-localhost'], 
                 env={'WHATEVER': 'you', 'MAY': 'need'})

而不是完全加载模块。

如果您坚持使用这种基本方法,那么您需要开始使用Popen(['bash',...

票数 2
EN

Stack Overflow用户

发布于 2011-08-19 22:57:20

如果你想用shell=False来做这件事,只要把它拆分为两个Popen调用即可。

代码语言:javascript
复制
subprocess.check_call('module load vnc'.split())
subprocess.Popen('vncserver :8080 -localhost'.split())
票数 0
EN

Stack Overflow用户

发布于 2018-08-07 02:57:59

您可以从Python脚本调用modulemodule命令由环境模块软件提供,该软件还提供python.py初始化脚本。

在Python脚本中计算此脚本将启用module python函数。如果环境模块安装在/usr/share/Modules中,您可以在/usr/share/Modules/init/python.py中找到此脚本。

以下代码启用module python函数:

代码语言:javascript
复制
import os
exec(open('/usr/share/Modules/init/python.py').read())

然后,您可以加载模块并启动应用程序:

代码语言:javascript
复制
module('load', 'vnc')
subprocess.Popen(['vncserver', ':8080', '-localhost'])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7123181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档