【问题标题】:Proper shebang of python script running on Windows在 Windows 上运行的 python 脚本的正确 shebang
【发布时间】:2016-10-12 02:22:16
【问题描述】:

在 Linux 机器上运行的 Python 脚本在顶部有这个 shebang。

#!/usr/bin/python

对于 Windows,最适合在上面使用的 shebang 是什么?我正在使用 Windows 10。

【问题讨论】:

  • 请参阅有关在 Windows 上使用 Shebang Lines 的文档。请注意,只有在该操作系统上使用 py 命令运行脚本时,它才会执行某些操作。
  • Windows 中没有“/usr/bin”的等价物,因此不建议使用显式 shebang。启动器支持使用 Windows 注册表查找特定 Python 版本的虚拟 shebang。最简单的是没有路径,例如#!python3。它还支持#!/usr/bin/python3#!/usr/bin/env python 等虚拟Unix 路径。后者搜索PATH
  • Linux上shebang的主要原因是操作系统可以直接输入./filename直接执行文本文件,假设文件设置了执行权限位,并且需要知道使用哪个解释器,例如Python、Bash 等。在 Windows/DOS 中,您可以以这种方式运行的唯一文件是批处理文件 (.bat)。
  • @JVines,请将您的评论作为答案,以便将赏金奖励给您

标签: python windows windows-10


【解决方案1】:

Linux(和类 Unix 机器)上的 shebang 行的解释是由操作系统完成的,而 Windows 不这样做,因此没有适当的 shebang 行。

因此,如果您不想做一些特别的事情,例如为您的程序选择特定的 Python 版本,您可以省略 shebang(或保留在 Linux 上运行所需的那个)。

如果您的 .py 文件在 Windows 上注册为由特定 Python 可执行文件启动,则可以检查该文件的第一行并解释它以确保您启动正确的版本。

可以使用原始文件和其他参数以这种方式启动另一个 Python 版本,但请记住,如果您使用它来启动 Python 2.7 解释器,其中 Python 3.8 是注册的解释器,那么您的 Python 程序对于两个版本都必须是有效的 Python(所以没有 print 语句、f'{somevar}' 字符串等)

【讨论】:

    【解决方案2】:

    在 VSCode 或任何其他 IDE 中使用 python 扩展,将解释器的路径设置为第一行代码 Windows 10.python 3.9

    #!C:/Users/waithira/AppData/Local/Programs/Python/Python39/python.exe 
    print('hello world')
    

    【讨论】:

      【解决方案3】:

      对于 Windows,正确使用的 shebang 实际上是相同的:

      #!/usr/bin/python
      

      Python 使用“virtual shebangs”,它允许某些特定的“Unix 风格”shebang 行在 Unix 和 Windows 之间移植。

      在 Windows 上,您需要将 .py 文件与任何 Python 可执行文件相关联,或者使用“Python 启动器”(py.exe 命令)运行 Python 脚本。

      将 .py 文件与任何 Python 可执行文件(或使用 py.exe)关联后,您只需键入 myscript.py 或在 Windows 资源管理器中双击它即可直接执行 Python 文件。然后,虚拟 shebang 将用于执行带有指定 Python 可执行文件的脚本。

      【讨论】:

        猜你喜欢
        • 2013-07-24
        • 1970-01-01
        • 2017-10-19
        • 2019-09-11
        • 2016-03-10
        • 1970-01-01
        • 1970-01-01
        • 2011-11-26
        相关资源
        最近更新 更多