Mac轻松几步搭建Python源码阅读环境 | Python基础

简介:
以下都是基于 Mac 环境的搭建细节,其他环境请做简单调整

Anaconda介绍

什么是 Anaconda?

Anaconda是一个打包的集合,里面预装好了conda、某个版本的Python、众多的packages包和科学计算工具等等,所以也称为Python的一种发行版。

什么是 conda ?

conda可以理解为一个工具,也是一个可执行命令,其核心功能是包管理与环境管理。包管理与pip的使用类似,环境管理则允许用户方便地安装不同版本的Python,并可以快速切换。

Anaconda安装

安装教程

我们选用图形界面的安装方式,具体参考官网 [0] 教程 https://docs.anaconda.com/anaconda/install/mac-os/#

1. Download the graphical macOS installer for your version of Python.
2. RECOMMENDED: Verify data integrity with SHA-256. For more information on hashes, see What about cryptographic hash verification?
3. Double-click the downloaded file and click continue to start the installation.
4. Answer the prompts on the Introduction, Read Me, and License screens.
5. Click the Install button to install Anaconda in your ~/opt directory (recommended):

基本操作命令

1) 查看安装了哪些包

conda list

2) 查看当前存在哪些虚拟环境

conda env list

3) Python 创建虚拟环境

conda create -n your_env_name python=x.x
# anaconda命令创建python版本为x.x,名字为your_env_name的虚拟环境

4) 激活或者切换虚拟环境

conda activate base
# 打开命令行,输入python --version检查当前 python 版本。

5) 对虚拟环境中安装额外的包

conda install -n your_env_name [package]

6) 关闭虚拟环境

conda deactivate

7) 删除虚拟环境

conda remove -n your_env_name --all

8) 删除环境中的某个包

conda remove --name $your_env_name $package_name 

9) 设置国内镜像

# 添加Anaconda的TUNA镜像
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
# 设置搜索时显示通道地址
conda config --set show_channel_urls yes

10) 恢复默认镜像

conda config --remove-key channels

VS Code 编辑器

VSCode全称Visual Studio Code,是微软出的一款轻量级代码编辑器,免费、开源而且功能强大。它支持几乎所有主流的程序语言的语法高亮、智能代码补全、自定义热键、括号匹配、代码片段、代码对比DiffGIT等特性,支持插件扩展,并针对网页开发和云端应用开发做了优化。软件跨平台支持WinMac以及Linux

安装教程

我们也选用图形界面的安装方式,具体参考官网 [1] 教程 https://code.visualstudio.com/

配置快捷启动

如果项目中每次打开VS Code很麻烦,那我们可以这样配置类似于Sublime Text的一键启动方式,具体操作如下:

  • VS Code窗口中,按下Command + Shift + P打开 Command Palette
  • 输入shell command,选择下面的Install 'code' command in PATH安装
  • 完成后在终端中即可以使用code .即可快速启动VS Code

image-20210414204332779.png

Python 源码

源码下载

git clone https://github.com/python/cpython.git

依赖安装

Mac环境下编译Python主要分为两个步骤:

  • Python 环境准备
  • 编译、安装

首先安装编译依赖的工具库:

  • gcc // 编译工具
  • zlib // 压缩、解压相关库
  • libffi // Python 所以来的用于支持 C 扩展的库
  • openssl // 安全套接字层密码库,Linux 中通常已具备

对于 MacOS环境,我们执行以下安装命令:

xcode-select --install

源码编译

进入Python源码根目录,执行命令:

./configure
make
make install

Python将被编译并安装到默认目录中。如果希望将Python安装在特定目录,则需要在make前修改configure命令,具体如下:

./configure --prefix=<Python待安装目录【绝对路径】>

编译后的文件:

  • bin  存放的是可执行文件
  • include  存放的是 Python 源码的头文件
  • lib  存放的是 Python 标准库
  • lib/python3.9/config-3.9m-{platform}  存放的是libpython3.9m.a,该静态库用于使用C语言进行扩展Python。{platform}代表平台,比如在Mac OS上为"darwin"
  • share  存放的是帮助等文件

源码介绍

源码根目录中跟Python语言直接相关的目录及其功能解释如下:

  • Doc  主要是官方文档的说明。
  • Include  主要包括了Python的运行的头文件。
  • Lib  主要包括了用Python实现的标准库。
  • Modules  主要包含了所有用C语言编写的模块,比如random、cStringIO等。Modules中的模块是那些对速度要求非常严格的模块,而有一些对速度没有太严格要求的模块,比如os,就是用Python编写,并且放在Lib目录下的
  • Objects  主要包含了所有Python的内建对象,包括整数、list、dict等。同时,该目录还包括了Python在运行时需要的所有的内部使用对象的实现。
  • Parser  主要包含了Python解释器中的Scanner和Parser部分,即对Python源码进行词法分析和语法分析的部分。除了这些,Parser目录下还包含了一些有用的工具,这些工具能够根据Python语言的语法自动生成Python语言的词法和语法分析器,将python文件编译生成语法树等相关工作。
  • Programs  主要包括了python的入口函数。
  • Python  主要包括了Python动态运行时执行的代码,里面包括编译、字节码解释器等工作。

尝试修改源码

下面编译验证PythonPython C API打印对象接口 [2],源文件在Objects/object.c

int
PyObject_Print(PyObject *op, FILE *fp, int flags)

假如我们希望在解释器交互界面中打印整数值的时候输出一段字符串,则可以修改如下函数,源文件在Objects/longobject.c

static PyObject *
long_to_decimal_string(PyObject *aa)
{
    PyObject *str = PyUnicode_FromString("Hello!This is my new code!");
    PyObject_Print(str, stdout, 0);
    printf("\n");

    PyObject *v;
    if (long_to_decimal_string_internal(aa, &v, NULL, NULL, NULL) == -1)
        return NULL;
    return v;
}

函数实现中的前 3 行为我们加入的代码,代码具体介绍如下:

  • PyUnicode_FromString用于把C中的原生字符数组转换为Python中的字符串Unicode对象
  • PyObject_Print则将转换好的字符串对象打印至我们指定的标准输出stdout

然后我们重新编译Python环境

make && make bininstall
# 假如不符合预期也先执行
make clean

运行编译后的Python,输入print语句即可验证效果:

>>> print(1)
'Hello!This is my new code!'
1

参考文献

[0] https://docs.anaconda.com/anaconda/install/mac-os/#

[1] https://code.visualstudio.com/

[2] https://flaggo.github.io/python3-source-code-analysis/preface/unix-linux-build/

❤️❤️❤️读者每一份热爱都是笔者前进的动力!

我是三十一,感谢各位朋友:点赞、收藏和评论,我们下期再见!

相关文章
|
3月前
|
人工智能 数据安全/隐私保护 异构计算
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
447 8
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
|
6月前
|
机器学习/深度学习 监控 算法
基于mediapipe深度学习的手势数字识别系统python源码
本内容涵盖手势识别算法的相关资料,包括:1. 算法运行效果预览(无水印完整程序);2. 软件版本与配置环境说明,提供Python运行环境安装步骤;3. 部分核心代码,完整版含中文注释及操作视频;4. 算法理论概述,详解Mediapipe框架在手势识别中的应用。Mediapipe采用模块化设计,包含Calculator Graph、Packet和Subgraph等核心组件,支持实时处理任务,广泛应用于虚拟现实、智能监控等领域。
|
3月前
|
机器学习/深度学习 数据采集 算法
基于mediapipe深度学习的运动人体姿态提取系统python源码
本内容介绍了基于Mediapipe的人体姿态提取算法。包含算法运行效果图、软件版本说明、核心代码及详细理论解析。Mediapipe通过预训练模型检测人体关键点,并利用部分亲和场(PAFs)构建姿态骨架,具有模块化架构,支持高效灵活的数据处理流程。
|
3月前
|
小程序 PHP 图形学
热门小游戏源码(Python+PHP)下载-微信小程序游戏源码Unity发实战指南​
本文详解如何结合Python、PHP与Unity开发并部署小游戏至微信小程序。涵盖技术选型、Pygame实战、PHP后端对接、Unity转换适配及性能优化,提供从原型到发布的完整指南,助力开发者快速上手并发布游戏。
|
5月前
|
算法 数据可视化 数据挖掘
基于EM期望最大化算法的GMM参数估计与三维数据分类系统python源码
本内容展示了基于EM算法的高斯混合模型(GMM)聚类实现,包含完整Python代码、运行效果图及理论解析。程序使用三维数据进行演示,涵盖误差计算、模型参数更新、结果可视化等关键步骤,并附有详细注释与操作视频,适合学习EM算法与GMM模型的原理及应用。
|
5月前
|
API 数据安全/隐私保护 开发者
企业微信自动加好友软件,导入手机号批量添加微信好友,python版本源码分享
代码展示了企业微信官方API的合规使用方式,包括获取access_token、查询部门列表和创建用户等功能
|
4月前
|
并行计算 算法 Java
Python3解释器深度解析与实战教程:从源码到性能优化的全路径探索
Python解释器不止CPython,还包括PyPy、MicroPython、GraalVM等,各具特色,适用于不同场景。本文深入解析Python解释器的工作原理、内存管理机制、GIL限制及其优化策略,并介绍性能调优工具链及未来发展方向,助力开发者提升Python应用性能。
297 0
|
5月前
|
机器人 API 数据安全/隐私保护
QQ机器人插件源码,自动回复聊天机器人,python源码分享
消息接收处理:通过Flask搭建HTTP服务接收go-cqhttp推送的QQ消息47 智能回复逻辑
|
8月前
|
前端开发 JavaScript 关系型数据库
基于python的租房网站-房屋出租租赁系统(python+django+vue)源码+运行
该项目是基于python/django/vue开发的房屋租赁系统/租房平台,作为本学期的课程作业作品。欢迎大家提出宝贵建议。
272 6
|
8月前
|
JavaScript 前端开发 关系型数据库
基于Python+Vue开发的体育场馆预约管理系统源码+运行
本项目为大学生课程设计作业,采用Python和Vue技术构建了一个体育场馆预约管理系统(实现前后端分离)。系统的主要目标在于帮助学生理解和掌握Python编程知识,同时培养其项目规划和开发能力。参与该项目的学习过程,学生能够在实际操作中锻炼技能,为未来的职业发展奠定良好的基础。
205 3

推荐镜像

更多