在python中,我有一个被拒绝的ERRNO13权限与子进程
问题的关键在于在python中,我有一个被拒绝的ERRNO13权限与子进程,python,bash,error-handling,hadoop,apache-pig,Python,Bash,Error Handling,Hadoop,Apache Pig,问题的关键在于 ret=subprocess.call(shlex.split(cmd)) cmd = /usr/share/java -cp pig-hadoop-conf-Simpsons:lib/pig-0.8.1-cdh3u1-core.jar:lib/hadoop-core-0.20.2-cdh3u1.jar org.apache.pig.Main -param func=cat -param from =foo.txt -x mapreduce fsFunc.pig 错误是 F
ret=subprocess.call(shlex.split(cmd))
cmd = /usr/share/java -cp pig-hadoop-conf-Simpsons:lib/pig-0.8.1-cdh3u1-core.jar:lib/hadoop-core-0.20.2-cdh3u1.jar org.apache.pig.Main -param func=cat -param from =foo.txt -x mapreduce fsFunc.pig
错误是
File "./run_pig.py", line 157, in process
ret=subprocess.call(shlex.split(cmd))
File "/usr/lib/python2.7/subprocess.py", line 493, in call
return Popen(*popenargs, **kwargs).wait()
File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1249, in _execute_child
raise child_exception
OSError: [Errno 13] Permission denied
如果需要更多信息,请告诉我。感谢您的帮助。谢谢 这是操作系统权限错误。这意味着您的用户没有写入该目录/文件的权限。这与Python无关。错误表明
/usr/share/java
没有权限执行它,可能是因为它是一个目录,而不是一个可执行文件
在你的Ubuntu机器上找到
java
可执行文件的位置(可能是/usr/bin/java
),并将/usr/share/
更改为指向正确的位置。只需键入chmod-R 777/your/project/
它适用于我的…您也可以尝试将shell=True设置为subprocess.call()中的第二个参数,这可能会起作用
ret = subprocess.call(shlex.split(cmd), shell=True)
cmd = /usr/share/java -cp pig-hadoop-conf-Simpsons:lib/pig-0.8.1-cdh3u1-core.jar:lib/hadoop-core-0.20.2-cdh3u1.jar org.apache.pig.Main -param func=cat -param from =foo.txt -x mapreduce fsFunc.pig
除了@Woobe的注释外,
foo.txt
不会出现在您运行该命令时所期望的位置;您应该传递foo.txt
和fsFunc.pig
及其完整路径名。此程序当前在其所在的服务器上执行时运行。我正试图让它在我的Ubuntu桌面上运行。foo.txt not existing不是当前的问题,它现在只是一个占位符。Java没有正确安装在bin/Java中,这就解决了它。一般来说,该错误似乎意味着当前用户无法执行某些内容。您可能可以通过使用chmod+x executable
chmod-R 777/your/project/
修复错误,使项目中的所有内容都可供系统上的任何用户读取、编辑和执行。你最好这样做:chmod-R+x/your/project/
。这只会让系统上的任何用户都可以执行所有内容,或者只需找到可执行文件并执行chmod+x executable
就更好了。这提高了安全性。