#!/usr/bin/env python
我把它放在脚本的顶部。 我已经看到这应该使脚本可以从命令行运行而无需python programname.py
. 除非我误解了,否则只要我在脚本顶部有上面的行,我应该可以使用programname.py
。 这是对的吗?
它对我不起作用,我只是收到一个错误,指示我必须在"呼叫"开始时使用python
。
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 上,你也需要执行 perms 才能以这种方式运行文件。使用 chmod
chmod +x myscript.py
(chmod 也可能适用于 Windows 中的 Cygwin(
如果您不以 root 身份运行,则可能需要 sudo
,这将是
sudo chmod +x myscript.py
然后尝试运行(在同一目录中(
./myscript.py
使文件可执行
sudo chmod +x /path/to/file.py
然后从与 file.py 相同的目录中:
./file.py
我也有同样的情况:我无法运行任何可执行文件。原因是我在没有exec
权限的情况下将分区(我的硬盘(放入/etc/fstab
。解决方案是改变:
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的问题,因为对文件的权限设置正确。