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

标签 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    # 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

我还可以在命令行中调用 python,方法是将 shebang 行中的内容键入其中。

/usr/bin/env python2.7
/usr/local/bin/python2.7

都在终端中运行 python。

我遇到了以下 stackoverflow 问题,但似乎没有一个能回答为什么这个问题会发生在我身上。

bash permission denied for python

Python script: problems with shebang line (unix)

最佳答案

确保在 Linux 上运行时使用 LF 行结尾而不是 CRLF 行结尾!感谢@jwodder 的建议。

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

关于python - 权限被拒绝在 linux 中使用 shebang 行运行 python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44972642/

相关文章:

bash - 在 bash 脚本中打开文件

python - 如何根据另一列中的值有条件替换一列中的值?

python - nosetest - 获取失败测试列表(无额外输出)

linux - 无法在 Ubuntu 中使用 Cabal

linux - 在 Linux 中,如果两者具有相同的名称,如何取消链接与实际文件的软链接(soft link)

linux - 使用 bash move 多个序列文件

python - 如何在变量中提取字典单键值对

python - 如何从特殊点切割字符串

c++ - 什么时候不使用开源代码?

linux - BASH - while 循环不重新检查文件