Python下的文件目录
基本介绍
经常好奇,当 PC 上安装了 Python 之后到底是多出了哪些东西,查阅了 Python 官方文档1,给出的回答如下:
简单总结一下,安装了 Python 之后,主要多出了以下三个部分:
- 官方配的一个标准开发环境:IDEL
- 处理 Python 脚本的工具:PythonLauncher2
- 一个框架(Frameworks/Python.framework):包括 Python 可执行文件和标准库
同时,文档也指出,要想删除 Python ,其实只需简单将上面三个东西删除即可。
虽然,官方文档是这么说的,但是,也要亲自验证一下,实际情况是否如文档所说的那样。
安装 Python
这里先简单的列一下用到的环境:
- 操作系统(OS):Ventura 13.4
- 工具:Homebrew 4.0.3-103-gd7029e9
安装 Python 的方式有很多种,这里选择最熟悉的方式,通过 Homebrew 进行安装 3.11 版本的 Python:
brew install [email protected]
安装完成之后,查询 [email protected]
的相关信息:
brew info [email protected]
获得了以下关于 [email protected]
用的信息:
[email protected]
的安装路径:/usr/local/Cellar/[email protected]/3.11.3
- 创建了符号连接:
/usr/local/bin/python3
,说明可以直接在终端通过python3
命令使用 Python - 可以通过
pip3
安装第三方库- 安装命令:
pip3 install <package>
- 第三方库被安装的位置:
/usr/local/lib/python3.11/site-packages
- 安装命令:
所以,下一步的目标是看看 [email protected]
的安装路径下,是不是正如前面所说的那样,最主要就是那三样东西。
Python 的主要文件
通过 tree
命令,看一看 [email protected]
的安装路径下的文件树:
tree -L 3 /usr/local/Cellar/[email protected]/3.11.3
显示的结果如下:
/usr/local/Cellar/[email protected]/3.11.3
├── Frameworks
│ └── Python.framework
│ ├── Headers -> Versions/Current/Headers
│ ├── Python -> Versions/Current/Python
│ ├── Resources -> Versions/Current/Resources
│ └── Versions
├── IDLE 3.app
│ └── Contents
│ ├── Info.plist
│ ├── MacOS
│ ├── PkgInfo
│ └── Resources
├── INSTALL_RECEIPT.json
├── LICENSE
├── Python Launcher 3.app
│ └── Contents
│ ├── Info.plist
│ ├── MacOS
│ └── Resources
├── README.rst
├── bin
│ ├── 2to3 -> ../Frameworks/Python.framework/Versions/3.11/bin/2to3
│ ├── 2to3-3.11 -> ../Frameworks/Python.framework/Versions/3.11/bin/2to3-3.11
│ ├── idle3 -> ../Frameworks/Python.framework/Versions/3.11/bin/idle3
│ ├── idle3.11 -> ../Frameworks/Python.framework/Versions/3.11/bin/idle3.11
│ ├── pip3
│ ├── pip3.11
│ ├── pydoc3 -> ../Frameworks/Python.framework/Versions/3.11/bin/pydoc3
│ ├── pydoc3.11 -> ../Frameworks/Python.framework/Versions/3.11/bin/pydoc3.11
│ ├── python3 -> ../Frameworks/Python.framework/Versions/3.11/bin/python3
│ ├── python3-config -> ../Frameworks/Python.framework/Versions/3.11/bin/python3-config
│ ├── python3.11 -> ../Frameworks/Python.framework/Versions/3.11/bin/python3.11
│ ├── python3.11-config -> ../Frameworks/Python.framework/Versions/3.11/bin/python3.11-config
│ ├── wheel3 -> wheel3.11
│ └── wheel3.11
├── lib
│ └── pkgconfig
│ ├── python-3.11-embed.pc -> ../../Frameworks/Python.framework/Versions/3.11/lib/pkgconfig/python-3.11-embed.pc
│ ├── python-3.11.pc -> ../../Frameworks/Python.framework/Versions/3.11/lib/pkgconfig/python-3.11.pc
│ ├── python3-embed.pc -> ../../Frameworks/Python.framework/Versions/3.11/lib/pkgconfig/python3-embed.pc
│ └── python3.pc -> ../../Frameworks/Python.framework/Versions/3.11/lib/pkgconfig/python3.pc
├── libexec
│ ├── bin
│ │ ├── idle -> ../../Frameworks/Python.framework/Versions/3.11/bin/idle3.11
│ │ ├── pip -> ../../bin/pip3.11
│ │ ├── pydoc -> ../../Frameworks/Python.framework/Versions/3.11/bin/pydoc3.11
│ │ ├── python -> ../../Frameworks/Python.framework/Versions/3.11/bin/python3.11
│ │ ├── python-config -> ../../Frameworks/Python.framework/Versions/3.11/bin/python3.11-config
│ │ └── wheel -> ../../bin/wheel3.11
│ └── wheel-0.40.0-py3-none-any.whl
└── share
└── man
└── man1
22 directories, 32 files
可以发现,结果正如前面官方文档所说的那样(官方诚不欺我,hh),安装 Python 之后得到的最主要的三样东西:
IDLE 3.app
Python Launcher 3.app
Frameworks/Python.framework
之于其它的一些文件,大多都是一些符号链接文件,基本都指向 Frameworks/Python.framework
目录下的文件。
再进一步观察一下,Frameworks/Python.framework
目录下由哪些主要的文件组成:
tree -L 3 /usr/local/Cellar/[email protected]/3.11.3/Frameworks/Python.framework/Versions/3.11
具体显示如下(由于展开的文件太多,只能展示部分,剩下的用 “······” 替代):
/usr/local/Cellar/[email protected]/3.11.3/Frameworks/Python.framework/Versions/3.11
├── Headers -> include/python3.11
├── Python
├── Resources
│ ├── Info.plist
│ └── Python.app
│ └── Contents
├── bin
│ ├── 2to3 -> 2to3-3.11
│ ├── 2to3-3.11
│ ├── idle3 -> idle3.11
│ ├── idle3.11
│ ├── pip3
│ ├── pip3.11
│ ├── pydoc3 -> pydoc3.11
│ ├── pydoc3.11
│ ├── python3 -> python3.11
│ ├── python3-config -> python3.11-config
│ ├── python3.11
│ └── python3.11-config
├── include
│ └── python3.11
│ ├── Python.h
│ ├── abstract.h
│ ├── bltinmodule.h
│ ├── cpython
│ └── ......
├── lib
│ ├── libpython3.11.dylib -> ../Python
│ ├── pkgconfig
│ │ ├── python-3.11-embed.pc
│ │ ├── python-3.11.pc
│ │ ├── python3-embed.pc -> python-3.11-embed.pc
│ │ └── python3.pc -> python-3.11.pc
│ └── python3.11
│ ├── LICENSE.txt
│ ├── __future__.py
│ ├── __hello__.py
│ ├── __phello__
│ ├── __pycache__
│ ├── antigravity.py
│ ├── argparse.py
│ ├── ensurepip
│ ├── site-packages -> ../../../../../../../../../lib/python3.11/site-packages
│ ├── site.py
│ └── ......
└── share
└── doc
└── python3.11
53 directories, 263 files
可以发现,其实就是主要由三大部分组成:
bin
lib
include
其中,bin
和 lib
就是前面提到的 Python 可执行文件和标准库,而至于 include
基本上都是一堆头文件,但是在众多头文件中看到了一个熟悉的身影 cpython
,可以简单猜测一下 include
可能是 Python 解释器 cpython
需要的头文件(毕竟,cpython 使用 C 语言写的嘛)。
后记
了解 Python 安装之后的文件目录,对于理解 Python 的运作机理还是起到了一的作用,从 Python 的文件目录,可以大概想想一个编程语言的最主要的部分其实也就三个(也没准是管中窥豹,hh):
- 首先,既然你定一个一套语法,自然需要一个东西去把它翻译出来,因为机器可不认你的那套语法,所以自然就会有解释器/编译器;
- 其次,为了让你的语言能够用较少的代码实现一些基本的功能,自然需要自带一些库文件了;
- 最后,真正使得一个语言能够蓬勃发展,还得靠社区的朋友们群策群力,自然少不了一些第三方库,而与第三方库相关的就是一些分发和管理的问题
留下评论