从python运行代码与从bash运行代码具有不同的权限? 第一步 python

从python运行代码与从bash运行代码具有不同的权限? 第一步 python,python,linux,bash,permissions,exec,Python,Linux,Bash,Permissions,Exec,使用shell=True,必须使用字符串,而不是参数列表。这可能会导致您的问题(可能不是权限问题-事实上,您只知道lessc与1一起退出,而不知道原因) 另外,在Python中,您可以运行命令。在Bash中,您运行命令并将stdout重定向到名为NULL的文件(您的意思是/dev/NULL?)。您可以最小化示例,使它们不依赖于包等。可能会将示例更改为“echo some_root_file或summin”。换句话说,你能做一个最小的、可运行的示例吗?好的,添加了可运行的示例。谢谢,这就解决了问题

使用
shell=True
,必须使用字符串,而不是参数列表。这可能会导致您的问题(可能不是权限问题-事实上,您只知道
lessc
1
一起退出,而不知道原因)


另外,在Python中,您可以运行命令。在Bash中,您运行命令并将stdout重定向到名为NULL的文件(您的意思是
/dev/NULL
?)。

您可以最小化示例,使它们不依赖于包等。可能会将示例更改为“echo some_root_file或summin”。换句话说,你能做一个最小的、可运行的示例吗?好的,添加了可运行的示例。谢谢,这就解决了问题。(删除
shell=True
)。是的,意思是:
/dev/null
(正在考虑Windows批处理中的
NUL
)。确认从bash工作;但不是来自.py文件<代码>返回的非零退出状态127
$ sudo adduser foo_user
$ mkdir /tmp/foo-user && chown foo_user:foo_user $_
$ sudo npm install -g less  # Install Node.js and NPM for this
$ echo ".box {color: red}" | sudo -u foo_user tee /tmp/foo-user/main.less
$ sudo -u foo_user python -c "from subprocess import check_output, STDOUT;
                              print check_output(['/usr/local/bin/lessc',
                                                  '/var/lib/nginx/body/main.less'],
                                                  stderr=STDOUT, shell=True);"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/lib/python2.7/subprocess.py", line 573, in check_output
    raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command '['/usr/local/bin/lessc', '/tmp/foo-user/main.less']' returned non-zero exit status 1
$ sudo -u foo_user /usr/local/bin/lessc /tmp/foo-user/main.less >NULL && echo $?
0