shell 直接从命令行运行python脚本

pxy2qtax  于 2023-06-30  发布在  Shell
关注(0)|答案(3)|浏览(109)
#!/usr/bin/env python

我把它写在剧本的开头。我已经看到,这应该使脚本可以从命令行运行,而不需要python programname.py。除非我误解了,否则只要我在脚本的顶部有上面的一行,我就应该能够使用programname.py。是这样吗?
它对我不起作用,我只是得到一个错误,指示我必须在“调用”的开始使用python

x6492ojm

x6492ojm1#

Python脚本通用运行

您可以在没有shebang(#!)的情况下使用

python myscript.py

或者几乎等同地(它将当前目录放在路径上并执行名为myscript的模块)(最好这样做!)

python -m myscript

从命令行,只要你有Python安装和你的路径环境变量(即设置为与python一起运行,如果安装了,通常就是这种情况)。

Shebangs(#!)是Unix的东西。

您正在使用的shebang通常用于在Unix平台(通常是Apple或Linux)上运行。Windows通常需要cygwin来使用shebang。
你通常可以默认使用系统路径上可用的任何python:

#!/usr/bin/env python

假设你在Unix上,你可以尝试其他位置的python设置,比如:

#!/usr/bin/python

混日子

你可以通过unix which命令来查看你当前使用的python,所以如果你想查看你的python来自哪里,可以使用这个命令:

which python

或者在Windows上(cygwin可能可以运行shebang):

where python

在Linux/Unix上,您还需要执行权限来以这种方式运行文件。使用chmod

chmod +x myscript.py

(chmod也可以应用于Windows中的Cygwin)
如果您不是以root用户身份运行,则可能需要sudo

sudo chmod +x myscript.py

,然后尝试(在同一目录内)运行

./myscript.py
iyfamqjs

iyfamqjs2#

使文件可执行

sudo chmod +x /path/to/file.py

然后从与www.example.com相同的目录file.py:

./file.py
vcirk6k6

vcirk6k63#

我也有过同样的经历:我无法运行任何可执行文件。原因是我把一个分区(我的硬盘)在/etc/fstab没有exec权限。解决办法是改变:

UUID=asdfasfasdfa /mnt/fee auto rw 0 1

UUID=asdfasfasdfa /mnt/fee auto defaults 0 1

因为exec包含在defaults = rw, suid, dev, exec, auto, nouser, and async.中在NTFS或其他文件系统上,您不能更改分区中文件或文件夹的权限,但这不是OP的问题,因为文件的权限已正确设置。

相关问题