Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.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
在linux中使用shebang行运行python脚本的权限被拒绝_Python_Linux_Bash_Python 2.7_Unix - Fatal编程技术网

在linux中使用shebang行运行python脚本的权限被拒绝

在linux中使用shebang行运行python脚本的权限被拒绝,python,linux,bash,python-2.7,unix,Python,Linux,Bash,Python 2.7,Unix,我试图在linux中运行python脚本,而不显式调用python。 我的目标是让$myscript.py运行我的脚本。目前调用$python myscript.py是可行的,但我希望不必键入额外的命令以便于使用。我将shebang行添加到脚本的第一行,以获得正确的python调用。我已经试过以下两种方法,但都不适用于我 #!/usr/bin/env python2.7 #!/usr/local/bin/python2.7 问题是我有以下行为 $ python2.7 myscript.py

我试图在linux中运行python脚本,而不显式调用python。 我的目标是让
$myscript.py
运行我的脚本。目前调用
$python myscript.py
是可行的,但我希望不必键入额外的命令以便于使用。我将shebang行添加到脚本的第一行,以获得正确的python调用。我已经试过以下两种方法,但都不适用于我

#!/usr/bin/env python2.7
#!/usr/local/bin/python2.7
问题是我有以下行为

$ python2.7 myscript.py    # This will run

$ myscript.py           # This is the error
$ ./myscript.py         # This will also error
: Permission denied     # Error message
当我对文件执行
ls-ltr
操作时,我拥有脚本和可执行文件的可执行权限

-rwxrwxr-x 1 uname users   3544 Jul  7 08:46 myscript.py
-rwxr-xr-x 1 root  root 6231413 Jul  7 00:57 /usr/local/bin/python2.7
我还可以通过在命令行中键入在shebang行中写入的内容来调用python

/usr/bin/env python2.7
/usr/local/bin/python2.7
两者都在终端中运行python

我已经经历了以下stackoverflow问题,似乎没有人能回答为什么这个问题发生在我身上


在linux上运行时,请确保使用LF行结束符而不是CRLF行结束符!谢谢@jwodder的建议


我在windows中使用升华文本编辑文件,并在linux机器上运行这些文件。我在sublime中更改了首选项以使用unix行结束符(LF),但我已经在DOS结束符(CRLF)中编写了该文件。我以为它会为我切换行尾。我的假设是错误的。我将它们全部转换为LF,脚本按预期运行。

我遇到了同样的问题

事实上,我在同一个目录中有两个不同的python文件。其中一个将作为>myfile1.py执行 没错

另一个不会,正如你上面解释的那样

myfile2.py /home/mylogin/PYTHON/myfile2.py:权限被拒绝

这就改变了我在windows上用notepad++创建了一个,在linux上用vi创建了另一个

jwodder解决了这个问题


解决方案是:dos2unix*用于目录中的所有python文件。

尝试了
/myscript.py
?当您执行
ls-l/usr/local/bin/python2.7
时会看到什么?“权限被拒绝”真的很奇怪。通常
路径
不会包含
,在这种情况下,shell会说类似“command not found”的话。你确定剧本的名字吗?您的用户名是字面上的“uname”,还是只是匿名?您正在运行哪个版本的Bash?您需要
/file\u name
来运行它。看这个:,这个:您的文件使用*nix行结尾(LF)还是DOS行结尾(CR-LF)?许多shebang实现不喜欢DOS行结尾。