Shebang表示法:Windows和Linux上的Python脚本?

Shebang表示法:Windows和Linux上的Python脚本?,python,windows,linux,shebang,Python,Windows,Linux,Shebang,我有一些用Python编写的小实用程序脚本,希望在Windows和Linux上都可用。我希望避免显式调用Python解释器。在Windows和Linux上,有没有一种简单的方法可以将shebang符号指向正确的位置?如果没有,是否有其他方法允许在Windows和Linux上隐式调用Python解释器,而不必在操作系统之间传输时修改脚本 编辑:Cygwin提供了Windows上的shebang支持,但我想在Windows上使用本机Windows Python解释器,而不是Cygwin解释器 编辑#

我有一些用Python编写的小实用程序脚本,希望在Windows和Linux上都可用。我希望避免显式调用Python解释器。在Windows和Linux上,有没有一种简单的方法可以将shebang符号指向正确的位置?如果没有,是否有其他方法允许在Windows和Linux上隐式调用Python解释器,而不必在操作系统之间传输时修改脚本

编辑:Cygwin提供了Windows上的shebang支持,但我想在Windows上使用本机Windows Python解释器,而不是Cygwin解释器


编辑#2:似乎shebang符号覆盖了Cygwin终端中的文件关联。我想我可以将Cygwin Python和symlink/usr/bin/Python卸载到Windows原生Python。

不使用shebang。。。但是您可以设置一个文件关联,查看哪些文件涉及Perl以及相关的答案,因为Windows和stdin/out重定向存在已知问题…

除非您使用cygwin,否则Windows不支持shebang。但是,在安装python时,它会添加.py文件的文件关联。如果只在命令行中输入脚本的名称,或者在windows资源管理器中双击它,那么它将在python中运行


我要做的是包含一个
#/在我的脚本中使用usr/bin/env-python
shebang。这允许在linux上支持shebang。如果您在安装了python的windows计算机上运行它,那么文件关联应该存在,并且它也会运行。

安装pywin32。其中一个好处是它设置了*.py与python解释器的文件关联。

阅读文档中的,最初在中描述的。它让 您可以在“py.ini”中定义自定义shebang配置(例如使用pypy), 开箱即用,您可以使用虚拟shebang,如
#/usr/bin/env python3
,或具有实际路径的shebang,如
#!“C:\Python33\python.exe”
。(包含空格的路径需要引用。)您还可以向shebang添加命令行选项。例如,下面的shebang添加了在脚本终止后进入交互模式的选项:
#/usr/bin/python3-i

安装程序将.py(控制台)和.pyw(GUI)脚本文件类型与分别命名的启动器py.exe和pyw.exe相关联,以便在Windows中启用对脚本的shebang支持。对于全用户安装,启动器安装到Windows文件夹中(即
%SystemRoot%
)。对于每用户安装,您可能需要手动将安装目录添加到
路径
,以便在shell(*)中使用py.exe。然后从命令行可以通过
py-2
py-3
py-2.6
py-3.3-32
(32位)等运行Python。当与
-m
结合使用特定版本的解释器(例如
py-3-m pip install
)以脚本形式运行模块时,启动器非常方便



(*)3.5+中的新安装程序默认为“%LocalAppData%\Programs\Python\Launcher”,用于按用户安装启动器,而不是将其安装在“Python.exe”旁边,它会自动将此目录添加到
路径

很抱歉打开了旧主题

我创建了一个文件
py.cmd
,并将其放在
C:\Windows\System32
文件夹中

py.bat:

@(
@set /p shebang=
)<%1
@set shebang=%shebang:#! =%
@%shebang% %1 %2 %3 %4 %5 %6 %7 %8 %9

然后运行它:
cmd>py SomePyFile.py param1 param1 paramX
简短回答: 最简单的方法是安装(gitbash)并使用shebang行。
#/usr/bin/env python | | anyother命令

这是我在任何计算机上安装的第一件事,因为谁不想要bash,我们都使用git,对吗

更多信息: 与Cygwin不同,git bash使用本机windows应用程序,并允许您在不进行任何配置的情况下使用bash脚本

它将自动将任何带有shebang行的文件视为可执行文件,如果其路径与bash在Linux上的路径相同,则运行该命令。它还只使用windows环境变量,因此您从Powershell或cmd添加到路径中的任何内容也适用于git bash

您可以在windows中编辑环境变量,方法是点击开始,然后键入
env
作为第一个选项。只需编辑您的用户路径变量(或所有用户的全局路径变量),并在命令行中添加您希望可用的任何应用程序

还可以安装git并将其与windows credentials manager连接起来,使您可以非常轻松地登录到支持2fa的svn服务,如GitHub到bitbucket,这样您就不必生成令牌

它还提供了右键单击菜单,可以在任何位置打开bash,甚至可以使用git打开GUI

在安装过程中,我建议您告诉它按原样签出并提交为Unix行结尾,以便对您的Linux和macOS伙伴友好。我还推荐许多其他git配置,但这是另一个主题


另一个选项: 安装WSL(1而不是2),它甚至更好,但需要一些配置。(更改默认驱动器装载路径手动连接凭据管理器等可以询问我所有这些,如果您需要的话,我建议在windows中运行Linux时进行很多调整。)

更灵活地使用WSL altho意味着您可以将所有命令行应用程序的Linux版本与windows版本分开

如果需要,它仍然可以运行本机windows exe文件,但如果安装了Linux二进制文件,则将优先运行

要设置WSL,请在power shell中以管理员身份运行此命令:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
*需要重新启动

然后在Microsoft app store中搜索Linux并选择发行版。 (我推荐Ubuntu 18LTS)


你也可以在GitBash中运行WSL,我认为windows没有任何shebang支持。您可以尝试使用python解释器为.py文件创建文件关联
#! c:\Python37\python.exe
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux