我有一些用 Python 编写的小型实用程序脚本,我希望它们可以在 Windows 和 Linux 上使用。我想避免显式调用 Python 解释器。有没有一种简单的方法可以将 shebang 表示法指向 Windows 和 Linux 上的正确位置?如果没有,是否有另一种方法允许在 Windows 和 Linux 上隐式调用 Python 解释器,而无需在操作系统之间传输时修改脚本?
编辑:Cygwin 提供了 Windows 上的 shebang 支持,但我想在 Windows 上使用本机 Windows Python 解释器,而不是 Cygwin 解释器。
编辑#2:shebang 符号似乎覆盖了 Cygwin 终端中的文件关联。我想我可以卸载 Cygwin Python 并将 /usr/bin/python 符号链接到 Windows-native Python。
原文由 dsimcha 发布,翻译遵循 CC BY-SA 4.0 许可协议
在文档中阅读 适用于 Windows 的 Python Launcher, 最初在 PEP 397 中进行了描述。它允许您在“py.ini”中定义自定义 shebang 配置(例如使用 pypy),并且开箱即用,您可以使用虚拟 shebangs,例如
#!/usr/bin/env python3
或带有真实路径的 shebangs,例如#!"C:\Python33\python.exe"
。 (包含空格的路径需要引号。)您还可以将命令行选项添加到 shebang。例如,下面的shebang添加了脚本终止后进入交互模式的选项:#!/usr/bin/python3 -i
。安装程序将 .py(控制台)和 .pyw(GUI)脚本文件类型与分别命名的启动器 py.exe 和 pyw.exe 相关联,以便在 Windows 中启用对脚本的 shebang 支持。对于所有用户安装,启动器安装到 Windows 文件夹(即
%SystemRoot%
)。对于每用户安装,您可能需要手动将安装目录添加到PATH
以便在 shell (*) 中使用 py.exe。 Then from the command line you can run Python viapy -2
,py -3
,py -2.6
,py -3.3-32
(32-bit), and so on .启动器与-m
结合使用时非常方便,可以使用特定版本的解释器将模块作为脚本运行,例如py -3 -m pip install
。(*) 3.5+ 中的新安装程序默认为“%LocalAppData%\Programs\Python\Launcher”,用于每个用户安装启动器,而不是将其安装在“python.exe”旁边,它会自动将此目录添加到
PATH
。