Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中,我有一个被拒绝的ERRNO13权限与子进程_Python_Bash_Error Handling_Hadoop_Apache Pig - Fatal编程技术网

在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
就更好了。这提高了安全性。