以下都是基于 Mac 环境的搭建细节,其他环境请做简单调整
Anaconda
是一个打包的集合,里面预装好了conda
、某个版本的Python
、众多的packages
包和科学计算工具等等,所以也称为Python
的一种发行版。
conda
可以理解为一个工具,也是一个可执行命令,其核心功能是包管理与环境管理。包管理与pip
的使用类似,环境管理则允许用户方便地安装不同版本的Python
,并可以快速切换。
我们选用图形界面的安装方式,具体参考官网 [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):
conda list
conda env list
conda create -n your_env_name python=x.x
# anaconda命令创建python版本为x.x,名字为your_env_name的虚拟环境
conda activate base
# 打开命令行,输入python --version检查当前 python 版本。
conda install -n your_env_name [package]
conda deactivate
conda remove -n your_env_name --all
conda remove --name $your_env_name $package_name
# 添加Anaconda的TUNA镜像
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
# 设置搜索时显示通道地址
conda config --set show_channel_urls yes
conda config --remove-key channels
VSCode
全称Visual Studio Code
,是微软出的一款轻量级代码编辑器,免费、开源而且功能强大。它支持几乎所有主流的程序语言的语法高亮、智能代码补全、自定义热键、括号匹配、代码片段、代码对比Diff
、GIT
等特性,支持插件扩展,并针对网页开发和云端应用开发做了优化。软件跨平台支持Win
、Mac
以及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
啦git clone https://github.com/python/cpython.git
在Mac
环境下编译Python
主要分为两个步骤:
首先安装编译依赖的工具库:
对于 MacOS
环境,我们执行以下安装命令:
xcode-select --install
进入Python
源码根目录,执行命令:
./configure
make
make install
Python
将被编译并安装到默认目录中。如果希望将Python
安装在特定目录,则需要在make
前修改configure
命令,具体如下:
./configure --prefix=<Python待安装目录【绝对路径】>
编译后的文件:
源码根目录中跟Python
语言直接相关的目录及其功能解释如下:
下面编译验证Python
的Python 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/