跳转到帖子

游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

TheHackerWorld官方

Pip install and Python's externally managed

精选回复

发布于

TL;DR: pip install 即将推出。安装Python 包必须通过APT 完成。 Kali Linux 的包管理器。来自其他来源的Python 包应安装在虚拟环境中。

下面讲个长话。

一些背景

早在今年2 月的几天里,你们中的一些人可能已经尝试(但失败了)使用Pip 安装Python 软件包。 Python 的包管理器。突然它不再工作了,而是给出了这个错误消息:

┌──(root㉿kali)-[~]

└─$ pip install xyz

error: 外部管理环境

?该环境由外部管理

╰─ 要在系统范围内安装Python 软件包,请尝试apt install

python3-xyz,其中xyz 是您要尝试的包

安装。

如果您想安装非Debian 打包的Python 包,

使用python3 -m venv path/to/venv 创建虚拟环境。

然后使用path/to/venv/bin/python 和path/to/venv/bin/pip。制造

确保你已经安装了python3-full。

如果您想安装非Debian 打包的Python 应用程序,

使用pipx install xyz 可能是最简单的,它将管理

为您打造的虚拟环境。确保您已安装pipx。

有关详细信息,请参阅/usr/share/doc/python3.11/README.venv。

note: 如果您认为这是一个错误,请联系您的Python 安装

或操作系统分发提供商。您可以覆盖此设置,但有损坏的风险

您的Python 安装或操作系统,通过传递--break-system-packages。

hint: 有关详细规范,请参阅PEP 668。

这一变化是在没有通知的情况下发生的,从我们收到的早期报告来看,很明显它会影响许多用户。所以我们恢复了它,因此pip install 如今仍然可以在Kali Linux 中运行。但在很长一段时间内,当Python 3.12 登陆Kali 时(大约在2023 年底或2024 年初),它将停止工作,这一次是永久的。我们对此无能为力,这是上游的变化,我们必须顺其自然。

那么为什么会有这样的改变呢?为了在系统范围内安装Python 包,以root 身份运行pip install 从来都不是一个好主意。在Kali 等Linux 发行版中,Python 包已通过APT 安装和管理。如果您引入另一个包管理器(在本例中为pip),它迟早可能会破坏APT 安装的包和程序。那么APT 可能会再次破坏pip 安装的内容。两个包管理器都会无休止地踩对方的脚趾。

也可以运行pip install --user 在用户的主目录中安装软件包,但问题是一样的。这些包将在运行时被Python 应用程序拾取,并且可能与APT 安装的其他包不兼容,从而导致程序行为异常或中断。

这个问题并不新鲜,但它对所有用户的影响并不相同。 Linux 发行版的经验丰富的用户已经知道该做什么、不该做什么,并且他们可以在系统出现故障时修复系统。然而,没有经验的用户不知道,因此他们很可能会搬起石头砸自己的脚。没有人可以责怪他们,有很多网页建议在没有提供足够上下文的情况下运行sudo pip install 。

我们(Kali 开发人员,以及更广泛的发行版开发人员)非常清楚Python 应用程序无法工作的issues: 错误报告是很常见的,而且我们经常无法重现该问题,而且我们经常发现它无法工作,因为某些软件包或应用程序是通过pip 安装的,并干扰了通过APT 安装的其他软件包。这些重复出现的错误报告是不可操作的,我们无法修复任何问题。用户会被烧伤,他们会从中吸取教训,但这并不有趣。

发生了什么变化

现在,回到Kali Linux 中即将进行的更改:从Python 3.12 开始,pip 将拒绝执行系统范围的安装(sudo pip install) 以及用户主目录安装(pip install --user)。这是个好消息,因为这将使没有经验的用户更难破坏他们的系统。这是一个值得欢迎的变化,我们感谢那些推动这一变化并使之发生的人。从长远来看,每个人的痛苦都会减少。但短期内,一些用户不会喜欢它,我们当然知道。

因此,如果您是运行sudo pip install 的人之一,并且将其硬连线到您的Fingermldr 中;好吧,你必须调整。您可能想看看pipx,更熟悉Python 的虚拟环境,并花一些时间阅读PEP 668: 将Python 环境标记为外部管理,以更好地理解当前的问题。

最后,为了提供更广泛的背景:PEP 668 提案是各个软件发行版协调努力的结果,旨在解决pip 太容易破坏其他包管理器这一长期存在的问题。这一更改已经在其他Linux 发行版中生效(例如最新版本的Debian)。在Kali Linux中,我们只是延迟了一点,以便我们可以提前警告您,以便您可以调整您的工作流程和脚本。但这一变化将在Python 3.12 中到来,没有必要再拖延了。

感谢您的阅读!

创建帐户或登录后发表意见

最近浏览 0

  • 没有会员查看此页面。