相对于直接安装原版Python,推荐使用Anaconda发行版,已经预先打包了科学计算的大量工具包。直接选择64位最新版即可,32位可以通过虚拟环境支持。
安装选项“Add Anaconda to my PATH environment variable”推荐勾选,否则无法直接在控制台中使用conda命令。
而空间不足、技术能力强、全盘虚拟环境的读者,也可以考虑安装miniconda,只有基础的Python与conda功能,安装包更精简。
4种主流的Python开发工具:
(1)Spyder适合从MATLAB迁移过来的用户(Anaconda中已内置);
(2)Jupyter Notebook适合做数据分析、分享展示(Anaconda中已内置);
(3)PyCharm适合大型项目开发;
(4)Visual Studio Code与PyCharm Community版不相上下。
笔者都是混合使用的:
(1)使用PyCharm来编写NumPy风格的docstring,它的注释自动完成功能目前比VS Code好用。
(2)Notebook的ipynb格式不方便用git进行源代码对比,所以本人更喜欢py格式。“#%%”可对py脚本分块,Spyder、VS Code都有此功能,PyCharm Pro版在Scientific Mode下才支持(注:%是MATLAB的注释,%%是MATLAB的代码分块,#是Python的注释,#%%是Python的代码分块。分块功能需要IDE支持)。
(3)VS Code可以将分块运行的结果导出成Notebook进行展示分享。
(4)VS Code可对分块进行断点调试,而在Spyder中调试难以使用。
网上流传着一张图学习Python,通过它可以快速了解基础语法,直接百度“一张图Python”,但原版针对的是Python 2。在那张图中,由于涉及的语法不多,因此改动简单,只要将print改成print()即可。
网上也有专为Python 3版编写的图,还添加了更多的语法。
下面的代码将Python 2改成了Python 3,读者需要对照网上的图片进行学习。
直接通过菜单启动Jupyter Notebook将进入用户目录,容易产生困惑。可以在控制台中先切换到项目目录,然后再启动Notebook:
更快捷的方法是先在文件资源管理器中打开项目目录,然后在地址栏中输入“cmd”,回车启动控制台。
直接通过国外下载安装实在太慢,可以切换成国内源。这里演示的是清华源,读者也可以使用中科大等其他源,速度可能更快。conda镜像源默认使用:
pip镜像源默认使用:
pip镜像源临时使用:
当使用的包越来越多时,依赖包的版本冲突问题将十分严重,常常会出现一个包装好后,其他的包就不能用了。所以良好的开发实践是一个项目一个虚拟环境。
以下示例创建了名为 py38 的虚拟环境,安装Python 3.8.x 的最新版,然后在py38环境下安装Pandas最新版,再启动对应内核的Notebook:
每次创建虚拟环境时都安装Python、Pandas等包也挺费时的,可以平时维护一个虚拟环境模板,以后使用时直接克隆即可:
如果要安装32位环境,则只需要设置CONDA_FORCE_32BIT即可,只对当前会话有效果。
conda install和pip install都可以用来进行包的安装,一般推荐先用conda,安装不上时再用pip。安装方法可参考对应包的帮助文档。
• 有些包需要C++的编译环境才能安装,如果能找到对应的whl文件,可以通过pip install xx.whl安装,如TA-Lib。
• 文件夹中提供了setup.py,可以通过python setup.py install或pip install.安装(注意:有一个英文句号,表示当前目录)。
• 压缩包中提供了setup.py,可以通过pip install xx.zip安装。
• pip源可能没有GitHub更新及时,可以通过pip install git+https://github.com/xx/xx.git从仓库直接安装。
包将自动安装到base或虚拟环境下的 site-packages目录下。
TA-Lib就是典型的需要C++编译才能安装的库,需要以下条件:
• 安装VC++开发环境;
• 下载 ta-lib-0.4.0-msvc.zip,并解压到指定目录。
有些复杂,所以建议从网络下载已经编译好的whl文件,通过 pip install TA_Lib-0.4.19-cp38-cp38-win_amd64.whl直接安装。请根据自己的实际情况下载正确版本。
苹果M1芯片的笔记本可以通过conda install -c conda-forge ta-lib安装。
常用的一些控制选项如下:
每个单元格的最后一行默认会显示,如果不想显示,最后一行末尾使用分号(;)即可。若要其他行也显示,可使用display。它们的显示还是有细微区别的,主要是display和print显示在In区,而最后一行显示在Out区,如图1-1所示。
图1-1 控制台输出显示
用display显示、clear_output清除输出,可以实现定时刷新显示功能: