Python 源码分析(一)

Python 的源码探索

  1. Python 环境搭建
  2. 目录详解
  3. 优化日志

1、Python 环境搭建

Hello World
   各位的 CSDN 的朋友们大家好,这次要分享的是介绍 Python 的安装目录文件夹里面的各种文件。
   这是 Python 的 官网(点我),进去后看见下面那个 Download 了吧,点它下面那个超链接,进去后直接去最下面,如图:
   Python 源码分析(一)_第1张图片
   这是 Python 目前的最新的正式发布版本,直接选择适合自己系统的就行,我选的【Windows x86-64 executable installer】,这是个超链接,翻译过来就是【Windows x86-64 可执行安装程序】,所以下载后直接运行就好啦,至于后面那个超链接 SIG,一般不用管它,这里我就下载下来简单说一下,它是个扩展名为 asc 的文件,至于作用嘛,可以保证你前面那个超链接下载的文件是正常的,没有木马什么的,内容如图:
   Python 源码分析(一)_第2张图片
   这个不是这次的重点,所以就说到这里,Python 的安装包下好之后,直接双击运行,如图:
   Python 源码分析(一)_第3张图片
   因为 3.8 我装了,所以再下个 3.7 展示 ,最下面有个 【Add Python 3.7 to PATH】,不想手动配置环境变量的朋友可以选上。
   上面那个译为【为所有用户安装启动器(推荐)】,你有多个用户就可以选上,我只有一个,所以是不可选的状态,然后就是【Install Now】的选项框,下面显示的小字是安装的路径以及【包括IDLE,pip和文档】和【创建快捷方式和文件关联】,如果你不介意装在 C 盘,就可以直接点进去开始安装了,不想就点下面那个 Customize installation(定制安装),就是自定义安装路径和一些配置,如图:Python 源码分析(一)_第4张图片   从上往下解释,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: Python 源码分析(一)_第5张图片
   老规矩,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 安装目录的东西,就是这次要仔仔细细说清楚的东西:
  Python 源码分析(一)_第6张图片
最后面还有个 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)