获取不带(选定的)标准库的Python

5

我非常喜欢 Python 的“电池包含”哲学,但现在我需要进行轻量级安装,只安装核心功能和一些其他我想逐个选择的功能。

是否可以只下载选择的模块的 Python 版本?


1
大多数核心语言功能都来自标准库。为什么你想要省略它们呢? - jathanism
如果没有,那么通常安装后删除您不需要的所有库就足够简单了。(编辑@jathanism:请定义“核心语言功能”,因为在我的书中,这是定义中不包括库的) - user395760
1
我需要制作一个小包,可以通过电子邮件或下载发送。我发现有一些文件夹/库我不使用(测试,文档,tcl),它们占用了几MB的空间。 - Don
2
那么,一个很大的MB有多关键呢?除非你要针对嵌入式系统做开发,否则可能没什么关系。现在看起来可能毫无意义,但有一天你想运行某些需要它的东西时,你会后悔这个决定的。 - user395760
5个回答

3

按照常规安装Python。打开Python解释器并导入一些您认为不需要的东西。

import io, optparse, tarfile

那么模块的str表示中将包含其路径。

>>> tarfile
<module 'tarfile' from '/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/tarfile.py'>

您可以进入并删除安装中不需要的任何.py文件。

显然这是危险的,因为您并不真正了解Python模块的内部依赖关系。


不清楚 OP 是否打算删除除 tkinter 以外的 stdlib 模块。 - Sridhar Ratnakumar

2
我看到有一些文件夹/库我没有使用(test,docs,tcl),它们占用了几MB的空间。 ActivePython不包括测试,并提供安装时选择排除文档和PyWin32(虽然不能排除tcl/tkinter-但是您可以在安装后安全地删除它)。或者,您可以使用PyInstaller为您的应用程序创建定制的安装程序。

2

请查看py2exe或类似的项目。它们基本上将一个Python脚本和其所有依赖项打包成一个单独的可执行文件。这看起来对你来说应该是正确的选择。

如果我没记错的话,py2exe中还有一个独立的模块可以递归地分析Python模块的依赖关系,不过我现在找不到了。


1
据我所知,不可能仅下载选定模块的Python,但在安装后,您可以删除所有不需要的内容(即:库),比如您永远不会使用JSON?那就删掉它!等等。

0

你可以从TinyPy开始,然后添加所需内容。不过,似乎TinyPy已经停止维护了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接