Python 的源码探索
- Python 环境搭建
- 目录详解
- 优化日志
1、Python 环境搭建
Hello World
各位的 CSDN 的朋友们大家好,这次要分享的是介绍 Python 的安装目录文件夹里面的各种文件。
这是 Python 的 官网(点我),进去后看见下面那个 Download 了吧,点它下面那个超链接,进去后直接去最下面,如图:
这是 Python 目前的最新的正式发布版本,直接选择适合自己系统的就行,我选的【Windows x86-64 executable installer】,这是个超链接,翻译过来就是【Windows x86-64 可执行安装程序】,所以下载后直接运行就好啦,至于后面那个超链接 SIG,一般不用管它,这里我就下载下来简单说一下,它是个扩展名为 asc 的文件,至于作用嘛,可以保证你前面那个超链接下载的文件是正常的,没有木马什么的,内容如图:
这个不是这次的重点,所以就说到这里,Python 的安装包下好之后,直接双击运行,如图:
因为 3.8 我装了,所以再下个 3.7 展示 ,最下面有个 【Add Python 3.7 to PATH】,不想手动配置环境变量的朋友可以选上。
上面那个译为【为所有用户安装启动器(推荐)】,你有多个用户就可以选上,我只有一个,所以是不可选的状态,然后就是【Install Now】的选项框,下面显示的小字是安装的路径以及【包括IDLE,pip和文档】和【创建快捷方式和文件关联】,如果你不介意装在 C 盘,就可以直接点进去开始安装了,不想就点下面那个 Customize installation(定制安装),就是自定义安装路径和一些配置,如图: 从上往下解释,Optional Features(可选功能):
第一个是 Documentation(文献资料),下面那行小字是【安装 Python 说明文件】;
第二个是 pip,用于管理 Python 的三方包,那行小字是【安装 pip,可以下载和安装其他 Python 软件包】;
第三个是【安装 tkinter 和 IDLE 开发环境】;
第四个是 python test suite(python 测试套件),小字是【安装标准库测试套件】;
第五个是 py launcher(py 启动器),默认安装;
第六个是 【对于所有用户使用程序和功能删除 py 启动器】,我只有一个,当然不可选;
Back(返回),Next(前进),Cancel(取消)
python for Windows(适用于 Windows 的 python)
那么,继续 Next:
老规矩,Advanced Options(高级选项):
第一个是【为用户安装】,意思是给 C 盘下的用户也安装,你都选了自定义安装了,难道还想在 C 盘 装? 默认是没有勾选的;
第二个是【将文件与 Python 关联(需要 py 启动器)】;
第三个是【为已安装的应用程序创建快捷方式】;
第四个是【将 Python 添加到环境变量】,如果在初始界面你已经勾选了【Add Python 3.7 to PATH】,就不用管,这里默认没勾选;
第五个是【预编译标准库】,是说把 Python 内置的标准库都编译一遍,这样之后第一次导入标准库模块就不用编译,能提高运行速度;
第六个是【下载调试符号】,一般情况下,大多数程序或库的编译都带有调试符号,如果你调试一个有调试符号的已编译程序或库,调试程序既能提供内存地址,也能提供变量和实例的名称,但是,勾选了这个下载调试符号,就会占用库的内存,增加内存大小;
第七个是【下载调试二进制文件(需要 VS 2015 或更高版本)】;
最后就是 Customize install location(自定义安装位置)了,选择 Browse(浏览),小字是【您需要对所选的位置具有写权限】,然后点击 Install(安装);
到这里就完成了 Windows 下 Python 基本环境的搭建,至于 IDE,喜欢哪一款敲代码的环境就去下,IDE 提供各种插件和友好的界面,可以给你良好的敲代码体验(逼格 ) 。
2、目录详解
目录
这个就是这次的重点了,上面说得很清楚,所以别说你不知道你的 Python 装在哪了,我用的是目前最新的 Python 3.8.2,下图是 Python 安装目录的东西,就是这次要仔仔细细说清楚的东西:
最后面还有个 vcruntime140.dll,因为截屏长度有限 ,那么开始吧,老规矩:
第一个是 DLLs(动态链接库),是个文件夹,等等,里面那么多文件,我怎么截屏?有了,不如用表来展示,我可真是个小机灵鬼 ,下面用表来展示:
文件 | 类型 |
---|---|
_asyncio.pdb | 程序数据库文件 |
_asyncio.pyd | Python 动态模块 |
_asyncio_d.pdb | 程序数据库文件 |
_asyncio_d.pyd | Python 动态模块 |
_bz2.pdb | 程序数据库文件 |
_bz2.pyd | Python 动态模块 |
_bz2_d.pdb | 程序数据库文件 |
_bz2_d.pyd | Python 动态模块 |
_ctypes.pdb | 程序数据库文件 |
_ctypes.pyd | Python 动态模块 |
_ctypes_d.pdb | 程序数据库文件 |
_ctypes_d.pyd | Python 动态模块 |
_ctypes_test.pdb | 程序数据库文件 |
_ctypes_test.pyd | Python 动态模块 |
_ctypes_test_d.pdb | 程序数据库文件 |
_ctypes_test_d.pyd | Python 动态模块 |
_decimal.pdb | 程序数据库文件 |
_decimal.pyd | Python 动态模块 |
_decimal_d.pdb | 程序数据库文件 |
_decimal_d.pyd | Python 动态模块 |
_elementtree.pdb | 程序数据库文件 |
_elementtree.pyd | Python 动态模块 |
_elementtree_d.pdb | 程序数据库文件 |
_elementtree_d.pyd | Python 动态模块 |
_hashlib.pdb | 程序数据库文件 |
_hashlib.pyd | Python 动态模块 |
_hashlib_d.pdb | 程序数据库文件 |
_hashlib_d.pyd | Python 动态模块 |
_lzma.pdb | 程序数据库文件 |
_lzma.pyd | Python 动态模块 |
_lzma_d.pdb | 程序数据库文件 |
_lzma_d.pyd | Python 动态模块 |
_msi.pdb | 程序数据库文件 |
_msi.pyd | Python 动态模块 |
_msi_d.pdb | 程序数据库文件 |
_msi_d.pyd | Python 动态模块 |
_multiprocessing.pdb | 程序数据库文件 |
_multiprocessing.pyd | Python 动态模块 |
_multiprocessing_d.pdb | 程序数据库文件 |
_multiprocessing_d.pyd | Python 动态模块 |
_overlapped.pdb | 程序数据库文件 |
_overlapped.pyd | Python 动态模块 |
_overlapped_d.pdb | 程序数据库文件 |
_overlapped_d.pyd | Python 动态模块 |
_queue.pdb | 程序数据库文件 |
_queue.pyd | Python 动态模块 |
_queue_d.pdb | 程序数据库文件 |
_queue_d.pyd | Python 动态模块 |
_socket.pdb | 程序数据库文件 |
_socket.pyd | Python 动态模块 |
_socket_d.pdb | 程序数据库文件 |
_socket_d.pyd | Python 动态模块 |
_sqlite3.pdb | 程序数据库文件 |
_sqlite3.pyd | Python 动态模块 |
_sqlite3_d.pdb | 程序数据库文件 |
_sqlite3_d.pyd | Python 动态模块 |
_ssl.pdb | 程序数据库文件 |
_ssl.pyd | Python 动态模块 |
_ssl_d.pdb | 程序数据库文件 |
_ssl_d.pyd | Python 动态模块 |
_testbuffer.pdb | 程序数据库文件 |
_testbuffer.pyd | Python 动态模块 |
_testbuffer_d.pdb | 程序数据库文件 |
_testbuffer_d.pyd | Python 动态模块 |
_testcapi.pdb | 程序数据库文件 |
_testcapi.pyd | Python 动态模块 |
_testcapi_d.pdb | 程序数据库文件 |
_testcapi_d.pyd | Python 动态模块 |
_testconsole.pdb | 程序数据库文件 |
_testconsole.pyd | Python 动态模块 |
_testconsole_d.pdb | 程序数据库文件 |
_testconsole_d.pyd | Python 动态模块 |
_testimportmultiple.pdb | 程序数据库文件 |
_testimportmultiple.pyd | Python 动态模块 |
_testimportmultiple_d.pdb | 程序数据库文件 |
_testimportmultiple_d.pyd | Python 动态模块 |
_testmultiphase.pdb | 程序数据库文件 |
_testmultiphase.pyd | Python 动态模块 |
_testmultiphase_d.pdb | 程序数据库文件 |
_testmultiphase_d.pyd | Python 动态模块 |
_tkinter.pdb | 程序数据库文件 |
_tkinter.pyd | Python 动态模块 |
_tkinter_d.lib | 静态链接库 |
_tkinter_d.pdb | 程序数据库文件 |
_tkinter_d.pyd | Python 动态模块 |
libcrypto-1_1.dll | 动态链接库 |
libcrypto-1_1.pdb | 程序数据库文件 |
libffi-7.dll | 动态链接库 |
libssl-1_1.dll | 动态链接库 |
libssl-1_1.pdb | 程序数据库文件 |
py.ico | Windows 图标文件 |
pyc.ico | Windows 图标文件 |
pyd.ico | Windows 图标文件 |
pyexpat.pdb | 程序数据库文件 |
pyexpat.pyd | Python 动态模块 |
pyexpat_d.pdb | 程序数据库文件 |
pyexpat_d.pyd | Python 动态模块 |
python_lib.cat | 数字签名文件 |
python_tools.cat | 数字签名文件 |
select.pdb | 程序数据库文件 |
select.pyd | Python 动态模块 |
select_d.pdb | 程序数据库文件 |
select_d.pyd | Python 动态模块 |
sqlite3.dll | 动态链接库 |
sqlite3.pdb | 程序数据库文件 |
sqlite3_d.dll | 动态链接库 |
sqlite3_d.pdb | 程序数据库文件 |
tcl86t.dll | 动态链接库 |
tk86t.dll | 动态链接库 |
unicodedata.pdb | 程序数据库文件 |
unicodedata.pyd | Python 动态模块 |
unicodedata_d.pdb | 程序数据库文件 |
unicodedata_d.pyd | Python 动态模块 |
winsound.pdb | 程序数据库文件 |
winsound.pyd | Python 动态模块 |
winsound_d.pdb | 程序数据库文件 |
winsound_d.pyd | Python 动态模块 |
---------------
Two years later…
就先从文件的类型开始说吧,上表一共涉及到六种类型,有 .pdb(程序数据库文件)、.pyd(Python 动态模块)、.lib(静态链接库)、.dll(动态链接库)、.ico(Windows 图标文件)、.cat(数字签名文件)。
.pdb : PDB(Program Database File,程序数据库文件),PDB 文件包含调试和项目的状态信息,以及编译后程序指向源代码的位置信息,可以在调试的时候跟踪到源代码,这就是说为什么 Python 是开源的,也就是开放源代码的,在 Python 的安装目录下就有这些文件,这还不足以说明 Python 是开源的吗,PDB 文件可以用 WavePDB 转换成 txt 文件。
.pyd : PYD 文件是 D 语言生成的二进制文件,也可以通过对 .py 文件加密处理生成,算是 Python 的扩展模块,作用和 dll 文件差不多,也叫开发者文件,Python 导入 PYD 文件,可以作为模块用 import 导入,具体方法是【import path.pydname】,path 就是 PYD 文件所在的路径;可以在上表中看到,每一个 .pyd 文件前面都有一个 .pdb 文件,也就是这些 .pyd 文件都可以通过 .pdb 文件找到并公开源代码。
.lib : 在 Python 中,这种文件可以作为静态库封装一些函数的实现代码,也用来静态调用 Python 里面的 .dll 文件,而在把这些实现代码静态连编到 .exe 或 .dll 文件后,之后基本就不再使用。
.dll : DLL(Dynamic Link Library,动态链接库),也叫应用程序拓展,在 Python 中,使用 .dll 文件中包含的功能来实现打开对话框,有助于避免代码重用,还可以节省内存空间,提高内存效率。
.ico : 这类文件是 Windows 可以使用的图标文件,在 Python 中,程序的图标就是来自这个文件,可以存储单个图案、多尺寸、多色板的图标文件,这种图标文件是由多张不同格式的图片组成的。
.cat : 这类文件是一个文本文件格式,可以用 Windows 自带的记事本打开,在 Windows 下,.cat 文件会作为安全目录类型的文件处理,所以你可能会在 Windows 的【文件资源管理器】上发现它的类型是【安全目录】,这是微软公司发布的对于驱动程序的数字签名文件,是通过了微软运行测试的、证明是合格的驱动程序后产生的。
到这里就完成了对 Python 安装目录下的【DLLs】文件夹的解析,之后会出该文件夹下文件和其他文件夹的说明,不见不散。
3、优化日志
日志
对,又是日志,希望 CSDN 的朋友们发现本文有什么需要补充或是不妥的地方,请在下方评论区留言,我会及时更新和回复
ps:2020-04-24,其实这篇文章应该是我第一篇博客的,因为当时有了想法,在本子上构思的时候就没做好,于是就先发了 Turtle 库的那篇,现在找到草稿,改了改,就发了,希望大家喜欢。
ps:2020-05-27,把标题【Python 的安装目录详解(一)】改成了【Python 源码剖析(一)】,突出主题。
ps:2020-06-02,更改标题。
感谢 CSDN,感谢 C 友们的支持
转载自原文链接, 如需删除请联系管理员。
原文链接:Python 源码分析(一),转载请注明来源!