我有一些用 Python 编写的小型实用程序脚本,我希望它们可以在 Windows 和 Linux 上使用。我想避免显式调用 Python 解释器。有没有一种简单的方法可以将 shebang 表示法指向 Windows 和 Linux 上的正确位置?如果没有,是否有另一种方法可以在 Windows 和 Linux 上隐式调用 Python 解释器,而无需在操作系统之间传输时修改脚本?
编辑:Cygwin 提供了 Windows 上的 shebang 支持,但我想在 Windows 上使用 native Windows Python 解释器,而不是 Cygwin 解释器。
编辑#2:shebang 符号似乎覆盖了 Cygwin 终端中的文件关联。我想我可以卸载 Cygwin Python 并将/usr/bin/python 符号链接(symbolic link)到 Windows-native Python。
最佳答案
阅读 Python Launcher for Windows在文档中,最初在 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。然后从命令行您可以通过 py -2
、py -3
、py -2.6
、py -3.3- 运行 Python 32
(32 位)等等。当与 -m
结合使用时,启动器很方便,可以使用特定版本的解释器将模块作为脚本运行,例如py -3 -m pip install
。
(*) 3.5+ 中的新安装程序默认为“%LocalAppData%\Programs\Python\Launcher”,用于每个用户安装启动器,而不是将其安装在“python.exe”旁边,它会自动添加这个目录到PATH
。
关于python - Shebang Notation : Python Scripts on Windows and Linux?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7574453/