#!/usr/bin/python 和#!/usr/bin/env python,哪个支持?

2024-01-23

Python 脚本的 shebang 应该是什么样的?

有些人支持#!/usr/bin/env python因为它可以智能地找到Python解释器。其他人支持#!/usr/bin/python,因为现在在大多数 GNU/Linux 发行版中python是默认程序。

这两种变体有什么好处?


The Debian Python 政策 http://www.debian.org/doc/packaging-manuals/python-policy/ch-python.html#s-interpreter states:

Python 解释器的首选规范是/usr/bin/python or /usr/bin/pythonX.Y。这可确保使用 python 的 Debian 安装,并满足其他 python 模块的所有依赖关系。

维护者不应使用以下命令覆盖 Debian Python 解释器/usr/bin/env python or /usr/bin/env pythonX.Y。这是不可取的,因为它绕过了 Debian 的依赖性检查,并使软件包容易受到不完整的 python 本地安装的影响。

请注意,Debian/Ubuntu 使用替代系统来管理哪个版本/usr/bin/python实际上指向。这在很多 python 版本中都运行得很好,至少对我来说(而且我现在一直在使用 python 从 2.3 到 2.7),并且在更新之间具有出色的过渡。

注意我从来没有用过pip。我想要自动安全升级,所以我通过安装所有我需要的Pythonaptitude。使用官方 Debian/Ubuntu 软件包让我的系统保持良好状态cleaner比我自己搞乱 python 安装。


让我强调一件事。上述建议参考的是systempython 应用程序的安装。让这些使用systempython 的托管版本。如果您实际上正在尝试自己定制的 python 安装,那就是not由操作系统管理,使用env可能有变体is正确的说法是“使用用户首选的 python”,而不是硬编码系统 python 安装(这将是/usr/bin/python) 或任何用户自定义路径。

Using env python如果您从例如以下位置调用它们,将导致您的程序表现不同一个Python虚拟环境。

This 可以是想要的(例如,您正在编写一个脚本来工作only在你的虚拟环境中)。还有它可能有问题(您为自己编写了一个工具,并期望它即使在 virtualenv 中也能同样工作 - 它可能会突然失败,因为它缺少软件包)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

#!/usr/bin/python 和#!/usr/bin/env python,哪个支持? 的相关文章

随机推荐

  • 如何在 android 中模拟 Kotlin 对象?

    我在 kotlin 中有一个对象控制当前用户的会话信息 我想模拟有回调的登录方法 在测试时 我需要在 SessionController 对象中模拟此方法 object SessionController fun signIn userna
  • Java (J2SE) DTMF 音调检测

    我正在尝试执行以下操作 我正在使用我的 java 应用程序给另一个人打电话 已经完成并且工作正常 然后我正在播放录音 例如 请按 1 一继续英语 已经完成且工作正常 现在我想检测那个人按 1 根据我在 google 搜索中的研究 我发现这可
  • 如何在 Excel 中将 hhmmAM/PM(无空格)格式化为时间 hh:mm AM/PM?

    我正在开发一个薪资项目 为了提高数据输入效率 我希望以 hhmmAM PM 格式输入时间 没有空格或冒号 最好只输入 a p 而不是 AM PM 并将其转换为标准带有冒号和空格的时间格式 谢谢 这是一个为列编码的小宏A 可以对其进行修改以处
  • 增加火花任务大小[重复]

    这个问题在这里已经有答案了 当我在 Spark Shell 中执行代码时遇到问题 Stage 1 gt 0 0 16 17 01 13 06 09 24 WARN TaskSetManager Stage 1 contains a task
  • 如何处理“超出最大存储过程、函数、触发器或视图嵌套级别(限制 32)”。

    我被要求创建脚本 希望运行它的人提供员工 ID 找到所提供的员工任意深度监督的所有员工 我的代码是 CREATE FUNCTION dbo GetNames V uniqueidentifier RETURNS OldNames TABLE
  • 为什么 R 的重复数据在排序数据上表现更好?

    在比较答案中两个函数的效率时检查列表是否包含 R 中的另一个列表 https stackoverflow com a 39350733 4408538 我偶然发现了一个有趣的结果 排序大大提高了效率duplicated当向量很大时 这让我感
  • 在 PropertyGrid 中设置只读属性将所有属性设置为只读

    我正在使用一个PropertyGrid控件来编辑我的类属性 并且我尝试根据其他属性设置将某些属性设置为只读 这是我班级的代码 Imports System ComponentModel Imports System Reflection P
  • Redis 和 Node.js 以及 Socket.io 问题

    我刚刚学习 redis 和 node js 有两个问题我找不到任何令人满意的答案 我的第一个问题是关于在 Node js 中重用 Redis 客户端 我找到了这个问题和答案 如何在socket io中重用redis连接 https stac
  • 比较两个数组并找出差异

    我需要比较两个数组并获得差异 背景 第一个数组将列出文件夹中的文件 第二个数组将读取文件的内容并存储在数组中 第一个数组的输出将是 a b c d e 第二个数组的输出将是 a b c e 我如何比较这两个有差异的数组 我想要的最终输出是
  • java数组循环遍历

    我有一个包含 1 2 3 4 5 值的数组 array a 1 2 3 4 5 现在我想以循环方式遍历它 就像我想打印 2 3 4 5 1 或 3 4 5 1 2 或 5 1 2 3 4 等等 任何算法关于这个 Edit 我想以循环方式打印
  • 后台服务科尔多瓦离子应用程序。 Backgroudn 插件无法在 ios 8.3 上运行

    我想实现一个后台服务 将地理位置发送到服务器 因此我使用了插件 cordova plugin background modehttps github com katzer cordova plugin background mode htt
  • asyncio - 重新引发任务异常

    我正在使用 asyncio 进行一些 TCP 通信 我有一个Receive 函数的作用是read 无限循环中 这作为后台任务运行 使用asyncio create task Receive 现在 如果连接被对等方关闭 则会引发异常 或者可能
  • 增强数据结构而不浪费内存

    我有课Tree我想将其扩充为更专业的数据结构 例如Order tree and Interval tree 这些增强功能需要添加Node 例如大小信息 以及对某些算法的微小更改 我想知道在 C 中实现性能 可读性和可维护性方面的增强的最佳方
  • Quickbooks API - 如何使用存储的信用卡创建费用

    我想知道如何使用存储的信用卡创建费用 使用 card api 我已成功将卡存储在 QuickBooks Online 中并收到返回的卡 ID 现在我想对存储的卡进行收费 为了创建费用 我发现有两种提供卡详细信息的方法 提供明确的卡详细信息
  • 变换路径和重绘不起作用

    我有一次创建的路径 并向其中添加了 React 在某些情况下 我将路径偏移Path offset or Path transform 然后使我的画布无效以重新绘制路径 但路径并没有在新的地方重新绘制 我通过使用检查了路径边界Path com
  • 如何在通过curl触发构建时设置Jenkins构建描述?

    我正在尝试设置我正在触发的构建的构建描述 因为我正在启动构建 但到目前为止我还没有运气 我遇到了一个解决方案 将文本添加到 Jenkins 远程 API 触发的构建页面 https stackoverflow com questions 1
  • 在 Linq Select 中创建元组

    我正在使用 C 和 NET Framework 4 5 1 使用 Entity Framework 6 1 3 从 SQL Server 数据库检索数据 我有这个 codes codesRepo SearchFor predicate Se
  • 使用 ParamArray,但需要至少一个参数

    我曾经拥有的 Public Sub Subscribe channel As ChannelType Public Sub Subscribe channels As IEnumerable Of ChannelType 第一个只是调用第二
  • 检测节点何时被删除(或因为父节点被删除而从 DOM 中删除)

    我想检测节点 例如nodeX 何时不再可用 要么是因为它被删除了 要么是因为它的父节点 或其父节点 被删除了 到目前为止 我能想到的就是使用Mutation Observer来查看页面上的任何删除 并检查删除的节点是否是nodeX或有nod
  • #!/usr/bin/python 和#!/usr/bin/env python,哪个支持?

    Python 脚本的 shebang 应该是什么样的 有些人支持 usr bin env python因为它可以智能地找到Python解释器 其他人支持 usr bin python 因为现在在大多数 GNU Linux 发行版中pytho