#!/usr/bin/env python
我把它写在剧本的开头。我已经看到,这应该使脚本可以从命令行运行,而不需要python programname.py。除非我误解了,否则只要我在脚本的顶部有上面的一行,我就应该能够使用programname.py。是这样吗?它对我不起作用,我只是得到一个错误,指示我必须在“调用”的开始使用python。
python programname.py
programname.py
python
x6492ojm1#
您可以在没有shebang(#!)的情况下使用
#!
python myscript.py
或者几乎等同地(它将当前目录放在路径上并执行名为myscript的模块)(最好这样做!):
myscript
python -m myscript
从命令行,只要你有Python安装和你的路径环境变量(即设置为与python一起运行,如果安装了,通常就是这种情况)。
您正在使用的shebang通常用于在Unix平台(通常是Apple或Linux)上运行。Windows通常需要cygwin来使用shebang。你通常可以默认使用系统路径上可用的任何python:
假设你在Unix上,你可以尝试其他位置的python设置,比如:
#!/usr/bin/python
你可以通过unix which命令来查看你当前使用的python,所以如果你想查看你的python来自哪里,可以使用这个命令:
which
which python
或者在Windows上(cygwin可能可以运行shebang):
where python
在Linux/Unix上,您还需要执行权限来以这种方式运行文件。使用chmod
chmod +x myscript.py
(chmod也可以应用于Windows中的Cygwin)如果您不是以root用户身份运行,则可能需要sudo,
sudo
sudo chmod +x myscript.py
,然后尝试(在同一目录内)运行
./myscript.py
iyfamqjs2#
使文件可执行
sudo chmod +x /path/to/file.py
然后从与www.example.com相同的目录file.py:
./file.py
vcirk6k63#
我也有过同样的经历:我无法运行任何可执行文件。原因是我把一个分区(我的硬盘)在/etc/fstab没有exec权限。解决办法是改变:
/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的问题,因为文件的权限已正确设置。
defaults = rw, suid, dev, exec, auto, nouser, and async.
3条答案
按热度按时间x6492ojm1#
Python脚本通用运行
您可以在没有shebang(
#!
)的情况下使用或者几乎等同地(它将当前目录放在路径上并执行名为
myscript
的模块)(最好这样做!):从命令行,只要你有Python安装和你的路径环境变量(即设置为与
python
一起运行,如果安装了,通常就是这种情况)。Shebangs(
#!
)是Unix的东西。您正在使用的shebang通常用于在Unix平台(通常是Apple或Linux)上运行。Windows通常需要cygwin来使用shebang。
你通常可以默认使用系统路径上可用的任何python:
假设你在Unix上,你可以尝试其他位置的python设置,比如:
混日子
你可以通过unix
which
命令来查看你当前使用的python,所以如果你想查看你的python来自哪里,可以使用这个命令:或者在Windows上(cygwin可能可以运行shebang):
在Linux/Unix上,您还需要执行权限来以这种方式运行文件。使用chmod
(chmod也可以应用于Windows中的Cygwin)
如果您不是以root用户身份运行,则可能需要
sudo
,,然后尝试(在同一目录内)运行
iyfamqjs2#
使文件可执行
然后从与www.example.com相同的目录file.py:
vcirk6k63#
我也有过同样的经历:我无法运行任何可执行文件。原因是我把一个分区(我的硬盘)在
/etc/fstab
没有exec
权限。解决办法是改变:到
因为
exec
包含在defaults = rw, suid, dev, exec, auto, nouser, and async.
中在NTFS或其他文件系统上,您不能更改分区中文件或文件夹的权限,但这不是OP的问题,因为文件的权限已正确设置。