【问题标题】:What is the difference between these 4 different types of Python shebangs on Windows?Windows 上这 4 种不同类型的 Python shebangs 有什么区别?
【发布时间】:2015-11-10 21:45:30
【问题描述】:

我在学习 Python 时第一次遇到 shebangs (#!),我仍在努力了解它们的工作原理。在做了一些研究之后,我登陆了this page,它列出了四种不同类型的shebangs。但是,我不太确定 Windows 中有什么区别。

#! /usr/bin/env python
#! /usr/bin/python
#! /usr/local/bin/python
#! python

现在,我打赌第一个与虚拟环境有关,但我不太确定是什么。根据StackOverflow thread,上面列出的路径实际上是针对 POSIX 系统的,而不是针对 Windows 的……这让我更加困惑,因为它们通过某种魔法以某种方式被翻译成 Windows 目录。这是一个报价:

bin 目录仅在 POSIX 系统上创建。 . .一些路径 在 virtualenv 中在 Windows 上略有不同:脚本和 Windows 上的可执行文件进入 ENV\Scripts\ 而不是 ENV/bin/ 和 库进入 ENV\Lib\ 而不是 ENV/lib/。

谁能给初学者更多关于像这样的shebangs在Windows上是如何工作的信息?

【问题讨论】:

    标签: python windows python-2.7 python-3.x shebang


    【解决方案1】:

    The documentation 并不完全明确,但根据我的阅读,这些 shebang 行之间没有区别。 Windows 上的 shebang 处理纯粹是“虚拟的”——也就是说,shebang 行中的路径实际上并未映射到 Windows 文件系统上的任何路径。相反,使用这些“虚拟路径”中的任何一个都只是意味着“在通过py Python 启动器运行此文件时使用默认系统 Python”。在 Windows 上允许 shebang 行的目的是让 Python 脚本指定 Python 或 Python 版本的参数(例如,python3)。您可以在上面链接的文档中找到有关如何确定默认系统 Python、如何覆盖它等的更多信息。

    顺便提一下,在 Windows 上,这些 shebang 仅在您使用 py 启动器运行 Python 脚本时使用。

    【讨论】:

    • 如果我没听错 - 这意味着所有四个都做同样的事情?
    • @TaylorLiss:是的。在 Unix 上,它们可能会做一些不同的事情,但在 Windows 上,路径无关紧要。
    • 啊,太棒了!比我最初想象的要简单得多。谢谢!
    • /usr/bin/env pythonPATH 中搜索目标 python.exe,它将使用活动的虚拟环境。
    • @eryksun:在 Windows 上?我在文档中没有看到任何表明这一点的内容。
    猜你喜欢
    • 1970-01-01
    • 2018-07-12
    • 2013-06-26
    • 2016-04-18
    • 2011-08-08
    • 2011-06-30
    • 1970-01-01
    • 2011-12-08
    相关资源
    最近更新 更多