我正在尝试在 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 问题,但似乎没有一个能回答为什么这个问题会发生在我身上。
最佳答案
确保在 Linux 上运行时使用 LF 行结尾而不是 CRLF 行结尾!感谢@jwodder 的建议。
我使用 sublimetext 在 windows 中编辑我的文件并在 linux 机器上运行这些文件。我将 sublime 中的首选项更改为使用 unix 行结尾 (LF),但我已经在 DOS 结尾 (CRLF) 中编写了文件。我以为它会为我切换行尾。我的假设是错误的。我将它们全部转换为 LF,脚本按预期运行。
关于python - 权限被拒绝在 linux 中使用 shebang 行运行 python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44972642/