如何使用pip更新Python标准库包?

Wil*_* V. 4 python pip tkinter python-3.x requirements.txt

我正在为我的 Python 项目创建一个requirements.txt文件。当有人通过安装我的项目时pip;我还想pip下载TkintertimePython 模块,这两个模块都是 Python 标准库中的模块。

我使用该命令pip freeze列出了当前安装的所有 Python 包,但是当我向下滚动到T部分时,我在列表中找不到Tkinter或。然后我尝试使用命令time安装 Tkinter但出现以下错误:pippip install Tkinter

Could not find a version that satisfies the requirement Tkinter (from versions: )
No matching distribution found for Tkinter
Run Code Online (Sandbox Code Playgroud)

我也做了同样的事情time并得到了同样的错误。(我运行的是 Python 3.6 和 Windows 10。)

是否可以在安装我的包pip时安装这些模块pip,或者我是否必须相信这一点,因为用户安装了Python,他们也会Tkinter安装这些time模块?

欢迎并感谢所有帮助!

Ser*_*yev 5

Python的标准库之所以被称为标准库,是因为它是Python的一个标准。换句话说,如果没有安装标准库,那么python环境根本就不是python。

标准库作为该版本的一部分(而不是作为附加或扩展)与每个 Python 版本一起进行测试和发布。

所以,是的,如果用户安装了 Python,那么这些库就会存在。只是根据定义。


关于内置库的升级:不,你不能这样做。因为它们是 python 设置的一部分,而不是应用程序环境的一部分。Python 与这些库中的特定代码非常紧密地绑定。所有 python 应用程序和库都期望这些库具有相同的行为,即使它们有错误。

除此之外,您不能安装与 python 内置函数之一同名的模块/包,因为它会在导入时产生歧义,并且可能会混淆/破坏依赖于它的所有其他库(或更糟糕的是,系统应用程序(如果将其安装到系统 python 中)。

但是,在某些情况下,您可以找到某些库的向后移植。通常,它们从 py3 向后移植到 py2。当然,他们的名字被改变了。

例如,您可以查看concurrent.features库,它是 py3.2+ 中一个方便的内置函数,但在 py2.7 中不存在。


UPD:不过,正如 @JulienPalard 在评论中暗示的那样,某些操作系统发行版可以拆分此标准库以简化二进制依赖关系:例如,在 Debian 上,Tkinter 将作为 python3-tk 单独安装。

从二进制操作系统打包的角度来看,这确实是有道理的:如果您根本没有 UI 并且想要节省磁盘空间,那么安装 python 库的 UI 部分是不值得的。

但是,您仍然无法通过pip. 因为这个包没有在 PyPI 上单独打包和提供。这种标准库分离是由选定的操作系统发行版进行的,并且只能通过该操作系统发行版的方式来解决。

  • Debian 不在其 python3 软件包中提供 tkinter,他们有一个单独的 python3-tk 软件包以避免对最小设置的依赖地狱。 (3认同)