错误:NameError:名称'subprocess'未定义。

46
#!/usr/bin/python3
username = 'joe'

# generate passphrase
pw_length = 6
phrase = subprocess.check_output(['pwgen', str(pw_length), '1'])
phrase = phrase.decode('utf-8').strip()

dev_null = open('/dev/null', 'w')
passwd = subprocess.Popen(['sudo', 'passwd', user], stdin=subprocess.PIPE,
                          stdout=dev_null.fileno(),
                          stderr=subprocess.STDOUT)
passwd.communicate( ((phrase + '\n')*2).encode('utf-8') )
if passwd.returncode != 0:
    raise OSError('password setting failed')

我怎么修复这个错误:

bash-3.00# python ./pass2.py
Traceback (most recent call last):
  File "./pass2.py", line 6, in ?
    phrase = subprocess.check_output(['pwgen', str(pw_length), '1'])
NameError: name 'subprocess' is not defined

11
import subprocess 是 Python 中的一个模块,用于运行外部命令或程序。 - Frank Osterfeld
1个回答

87

Subprocess是一个模块。你需要导入它。

将以下代码作为文件的第二行:import subprocess


1
现在我得到了这个错误信息:phrase = subprocess.check_output(['pwgen', str(pw_length), '1']) AttributeError: 'module' object has no attribute 'check_output' - munish
1
@munish 开一个新问题。不要在解决了初始问题后编辑原始问题来提出新问题。您应该接受jknupp的答案,并就您的“check_output”错误提出新问题。我回滚了您的编辑,以便您可以提出新问题。 - Ricardo Altamirano
4
@RicardoAltamirano,munish:实际上,他不应该这样做。他不应该养成一遇到错误就在stackoverflow上发帖的习惯。但我同意您不在此继续其他讨论(当然这主要是针对原帖作者:p)。 - keyser
@Keyser 很好的观点。在发布到这里之前,调试应该始终排在第一位。 - Ricardo Altamirano

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接