Shebang符号:Windows和Linux上的Python脚本?
我有一些用Python编写的小实用脚本,我想在Windows和Linux上都可以使用。 我想避免显式调用Python解释器。 有没有一种简单的方法来将shebang符号指向Windows和Linux上的正确位置? 如果没有,是否有另一种方法来允许在Windows和Linux上隐式调用Python解释器,而无需在操作系统间进行转换时修改脚本?
编辑:Windows上的shebang支持是Cygwin提供的,但我想在Windows上使用本机Windows Python解释器,而不是Cygwin。
编辑#2:看来,shebang符号覆盖Cygwinterminal中的文件关联。 我想我可以将Cygwin Python和symlink / usr / bin / python卸载到Windows本机Python。
除非你使用cygwin,否则windows不支持。 但是,当您安装python时,它会添加为.py文件的文件关联。 如果你只在命令行中input你的脚本的名字,或者在Windows资源pipe理器中双击它,那么它将通过python运行。
我所做的是在脚本中包含#!/usr/bin/env python
shebang。 这允许在Linux上的shebang支持。 如果你在安装了python的windows计算机上运行它,那么文件关联应该在那里,它也会运行。
阅读文档中的Python启动程序(Windows启动程序) ,最初在PEP 397中进行了介绍 。 它可以让你在一个ini中定义自定义的shebangconfiguration(例如使用pypy),但是你可以使用#!/usr/bin/env python3
这样的虚拟shebang,或者带有真实path的shebang,比如#!C:\Python33\python.exe
。 您还可以将命令行选项添加到shebang。 例如,下面的shebang添加了脚本终止后进入交互模式的选项: #!/usr/bin/python3 -i
。
Python 3.3将.py(console)和.pyw(GUI)脚本文件types与各自命名的启动程序py.exe和pyw.exe相关联,以对Windows上的脚本启用shebang支持。 当为所有用户安装时,新的启动程序安装到根目录的Windows文件夹(即%SystemRoot%
)。 否则,您需要将安装目录添加到PATH
中,以便在cmd shell中使用py.exe。 然后从命令行可以运行py -2
, py -3
, py -2.6
, py -3.3-32
(32位)等等。 当与-m
一起运行模块作为脚本时,启动程序很方便,例如py -3 -m pip install
。
如果你只使用Python 2,也可以单独安装pylauncher的一个版本。
安装pywin32。 其中一件好事就是将* .py的文件关联设置为python解释器。
不是与shebang …但你可能能够build立一个文件关联,看到这个问题处理Perl和相关的答案,这也将是相关的,因为已知的问题与Windows和标准输出/redirect…