我应该把shebang放在我的Python脚本中吗?以什么形式?
#!/usr/bin/env python
or
#!/usr/local/bin/python
它们同样便携吗?哪种形式使用最多?
注意:龙卷风项目使用shebang。另一方面,Django项目没有。
我应该把shebang放在我的Python脚本中吗?以什么形式?
#!/usr/bin/env python
or
#!/usr/local/bin/python
它们同样便携吗?哪种形式使用最多?
注意:龙卷风项目使用shebang。另一方面,Django项目没有。
当前回答
任何脚本中的shebang行决定了脚本是否能够像独立可执行文件一样执行,而无需事先在终端中键入python或在文件管理器中双击它(在配置正确的情况下)。它不是必需的,但通常放在那里,这样当有人看到在编辑器中打开的文件时,他们立即知道他们在看什么。但是,你用哪条线是很重要的。
Python 3脚本(默认为版本3.latest)的正确用法是:
#!/usr/bin/env python3
Python 2脚本(默认为版本2.latest)的正确用法是:
#!/usr/bin/env python2
不应该使用以下代码(除非你编写的代码与Python 2兼容,这种情况很少见)。X和3.x):
#!/usr/bin/env python
PEP 394中给出这些建议的原因是,python可以在不同的系统上引用python2或python3。
此外,不要使用:
#!/usr/local/bin/python
python可以安装在/usr/bin/python或/bin/python 案例,以上#!将会失败。”
——“# !/usr/bin/env python“vs”!/ usr / local / bin / python)”
其他回答
当我最近在Windows 7上安装Python 3.6.1时,它还安装了Windows的Python启动器,它应该处理shebang行。然而,我发现Python启动器没有这样做:shebang行被忽略,并且总是使用Python 2.7.13(除非我使用py -3执行脚本)。
为了解决这个问题,我必须编辑Windows注册表键HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Python.File\shell\open\命令。这仍然有价值
"C:\Python27\python.exe" "%1" %*
从我之前的Python 2.7安装。我将这个注册表项值修改为
"C:\Windows\py.exe" "%1" %*
Python Launcher shebang行处理工作如上所述。
答:只有当您计划使它成为一个命令行可执行脚本时。
步骤如下:
首先验证要使用的正确的shebang字符串:
which python
从中获取输出并将其添加到第一行中(使用shebang #!)。
在我的系统上,它的反应如下:
$which python
/usr/bin/python
所以你的shebang看起来像这样:
#!/usr/bin/python
保存后,它仍然会像以前一样运行,因为python会将第一行视为注释。
python filename.py
为了使它成为一个命令,复制它以删除.py扩展名。
cp filename.py filename
告诉文件系统这将是可执行的:
chmod +x filename
要测试它,使用:
./filename
最好的做法是将它移动到你的$PATH中的某个地方,这样你只需要输入文件名本身。
sudo cp filename /usr/sbin
这样它就可以在任何地方工作(在文件名之前没有。/)
如果你想让你的文件可执行,你必须在你的脚本中添加shebang line。
#!/usr/bin/env python3
这是更好的选择,因为这将不依赖于特定的Linux发行版,但可以用于几乎所有的Linux发行版,因为它从环境变量中寻找python3路径,这对于不同的Linux发行版是不同的。
而
#!/usr/local/bin/python3
将是python3的发行版特定路径,如果python3不在此路径上,将无法工作,并且可能导致开发人员从一个发行版迁移到另一个linux发行版时的混乱和模糊。
任何脚本中的shebang行决定了脚本是否能够像独立可执行文件一样执行,而无需事先在终端中键入python或在文件管理器中双击它(在配置正确的情况下)。它不是必需的,但通常放在那里,这样当有人看到在编辑器中打开的文件时,他们立即知道他们在看什么。但是,你用哪条线是很重要的。
Python 3脚本(默认为版本3.latest)的正确用法是:
#!/usr/bin/env python3
Python 2脚本(默认为版本2.latest)的正确用法是:
#!/usr/bin/env python2
不应该使用以下代码(除非你编写的代码与Python 2兼容,这种情况很少见)。X和3.x):
#!/usr/bin/env python
PEP 394中给出这些建议的原因是,python可以在不同的系统上引用python2或python3。
此外,不要使用:
#!/usr/local/bin/python
python可以安装在/usr/bin/python或/bin/python 案例,以上#!将会失败。”
——“# !/usr/bin/env python“vs”!/ usr / local / bin / python)”
使用第一个
which python
这将给出输出作为python解释器(二进制)存在的位置。
这个输出可以是任意的
/usr/bin/python
or
/bin/python
现在适当地选择shebang线并使用它。
我们可以用:
#!/usr/bin/env
or
#!/bin/env