Python 在jupyter笔记本中运行时,子进程命令失败

Python 在jupyter笔记本中运行时,子进程命令失败,python,subprocess,jupyter,Python,Subprocess,Jupyter,这在解释器中起作用 python Python 2.7.15rc1 (default, Nov 12 2018, 14:31:15) [GCC 7.3.0] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import subprocess >>> subprocess.call(["sudo", "apt", "update"]) [s

这在解释器中起作用

python
Python 2.7.15rc1 (default, Nov 12 2018, 14:31:15) 
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import subprocess
>>> subprocess.call(["sudo", "apt", "update"])
[sudo] password for stefan: 
Get:1 file:/var/cuda-repo-10-1-local-10.1.105-418.39  InRelease
Ign:1 file:/var/cuda-repo-10-1-local-10.1.105-418.39  InRelease
.
.
.
etched 2,778 kB in 1s (2,305 kB/s)                                                  
Reading package lists... Done
Building dependency tree       
Reading state information... Done
12 packages can be upgraded. Run 'apt list --upgradable' to see them.
0
>>> exit()
但如果我把它放在jupyter的一间牢房里,我会得到:

import subprocess
subprocess.call(["sudo", "apt", "update"])


output: 1


subprocess.check_call(["sudo", "apt", "update"])


CalledProcessError                        Traceback (most recent call last)
<ipython-input-21-33ce645708e7> in <module>()
----> 1 subprocess.check_call(["sudo", "apt", "update"])

/usr/lib/python2.7/subprocess.pyc in check_call(*popenargs, **kwargs)
    188         if cmd is None:
    189             cmd = popenargs[0]
--> 190         raise CalledProcessError(retcode, cmd)
    191     return 0
    192 

CalledProcessError: Command '['sudo', 'apt', 'update']' returned non-zero exit status 1
导入子流程
子进程调用([“sudo”、“apt”、“update”])
产出:1
子进程检查调用([“sudo”、“apt”、“update”])
CalledProcessError回溯(最近一次呼叫上次)
在()
---->1子进程检查调用([“sudo”、“apt”、“update”])
/检查调用中的usr/lib/python2.7/subprocess.pyc(*popenargs,**kwargs)
188如果cmd为None:
189 cmd=popenargs[0]
-->190升起被调用的进程错误(retcode,cmd)
191返回0
192
CalledProcessError:命令“[”sudo“,”apt“,”update“]”返回非零退出状态1

使用类似于
check\u output()
的方法而不是
check\u call()
将返回错误字符串,并且更具描述性。查看文档。jupyter进程是否以
sudo
权限运行?当然,您是对的!如果jupyter允许权限升级,这将是一个重大的安全漏洞。当jupyter作为root用户运行时-没有问题。谢谢。使用类似于
check\u output()
的方法而不是
check\u call()
将返回错误字符串,并且更具描述性。查看文档。jupyter进程是否以
sudo
权限运行?当然,您是对的!如果jupyter允许权限升级,这将是一个重大的安全漏洞。当jupyter作为root用户运行时-没有问题。非常感谢。