一个好的编译器对于我们处理日常的科研很关键,好的编译器无论是从界面,字体风格,提示,调试等各方面都能从用户角度出发,提供最好的使用体验。Python本身自带的IDLE或者在CMD里进行操作和调试,对于小型的测试程序和学习的时候是可以的;但是对相对比较大的程序,它们就显得有些力不从心了,首先是查找和提示的,还有就是当你想要改变程序中某个变量或者函数的名称,一个个查找是让人奔溃的事情。

  本人显示从IDLE和CMD开始Python码城过程的,慢慢的发现,相对于以前使用的VS和eclipse,它们显得太LOW了。我开始尝试在sublime里面进行编辑,给sublime装插件,能够直接运行Python程序(Ctrl+B),以及进行代码智能提示。sublime用了好长一段时间,还是比较好用的,代码的显示也比较让人愉悦,你也可以按自己的喜好去进行配置。总的来说,还是比较推荐sublime的。还有就是pycharm了,有很多的Python开发者使用它,PyCharm确实是Python开发之首选。我也用过一段时间,习惯了sublime,就没太多的去研究,总体来说也还是比较推荐的编译器之一。

  后来在别人的博客中看到了ipython,它是一个Python交互式的shell,比默认的shell要好用,支持变量的自动补全,自动缩进,支持bash shell命令,内置了许多很有用的功能和函数。安装也很简单,windows下直接在命令行输入:python –m pip install IPython。最让人惊喜的是,ipython中提供了一下简单好用的magic函数。以下是百度上列举的常用命令:

%bg function把 function 放到后台执行,例如: %bg myfunc(x, y,z=1),之后可以用jobs将其结果取回。myvar = jobs.result(5) 或 myvar =jobs[5].result。另外,jobs.status() 可以查看现有任务的状态。
%ed 或 %edit编辑一个文件并执行,如果只编辑不执行,用 ed -x filename 即可。
%env显示环境变量
%hist 或 %history显示历史记录
%macro name n1-n2 n3-n4 ... n5 .. n6 ...创建一个名称为 name 的宏,执行 name 就是执行 n1-n2 n3-n4 ... n5 .. n6 ...这些代码。
%pwd显示当前目录
%pycat filename用语法高亮显示一个 python 文件(不用加.py后缀名)
%save filename n1-n2 n3-n4 ... n5 .. n6 ...将执行过多代码保存为文件
%time statement计算一段代码的执行时间
%timeit statement自动选择重复和循环次数计算一段代码的执行时间,太方便了。

  然而百度漏掉了比较常用的%run,可以用来运行外部的Python脚本。还有**??来显示某个模块用法,如import os,os??。其他的包括查看变量的值,代码运行效率检查等。下次我将单独开一篇讲常见的magic命令,这次就不多赘述。

  说完自己选择编译器进行开发的过程,终于要来到我们的重点了——Anaconda。一个偶然的机会,看到师兄使用ipython notebook进行汇报,可以在页面进行代码和文档排版编写,对于科学计算非常方便。ipython notebook是web based IPython封装,但是可以展现丰富文本,使得整个工作可以以笔记的形式展现、存储,对于交互编程、学习非常方便。关于ipython notebook的具体使用,找机会单独另开一节,在此不是重点。下图是它的页面,在上面还可以用markdown标记编辑文本。可以呈现很不错的文档页面。

  Anaconda是一个集成的环境,现在已经升级到Anaconda2了,直接下载安装,很方便,集成了Python,ipython,notebook,Spyder和qtconsole,如下所示。之前的ipython notebook也改为了jupyter notebook。

  Anaconda是一个和Canopy类似的科学计算环境,但用起来更加方便。自带的包管理器conda也很强大。Anaconda提供了Python2.7和Python3.4两个版本,同时如果需要其他版本,还可以通过conda来创建。

  下面来看一下conda。输入 conda list 来看一下所有安装时自带的Python扩展。粗略看了一下,其中包括了常用的 Numpy , Scipy , matplotlib 和 networkx 等,以及 beautiful-soup , requests , flask , tornado 等网络相关的扩展,还有常用的科学工具包,scikit-image,scikit-learn等。其他没有的包可以通过pip,easy_install安装,也可以通过它特有的conda来进行安装,conda install ***,如果需要指定版本,也可以直接用 [package-name]=x.x 来指定。conda的repo中的扩展不算太新,如果想要更新的,可能要用PyPI或者自己下载源码。而conda和pip关联的很好。使用pip安装的东西可以使用conda来管理,这点要比Canopy好。

这个科学计算环境的另一个要求就是能够多个Python版本并存,尤其是2.x和3.x的并存。这个通过 virtualenv 可以做到。Anaconda也正是通过其实现的。

下面用conda创建一个名叫python3的版本为python3.4的环境。

conda create -n python3 python=3.4
这样就会在Anaconda安装目录下的envs目录下创建python3这个目录。

向其中安装扩展可以:

直接用 conda install 并用 -n 指明安装到的环境,这里自然就是 python3 。
像 virtualenv 那样,先activate,然后在虚拟环境中安装。

spyder就是一个Python的扩展,也是比较好用的,感兴趣的可以自己亲自尝试下,它里面的查看变量的功能还是很方便的。

2015-11-23 22:13:51

python编译环境发掘——从IDLE到sublime到pycharm到Anaconda的更多相关文章

  1. 2.准备Python编译环境

    2.准备Python编译环境 2.1下载Python2.7.6.tgz.ipython1.2.1.tgz.sqlite-autoconf-3071401.tar.gz 2.2安装Python2.7.6 ...

  2. 【转】ubuntu下安装eclipse以及配置python编译环境

    原文网址:http://blog.csdn.net/wangpengwei2/article/details/17580589 一.安装eclipse 1.从http://www.eclipse.or ...

  3. 使用Code::Blocks配置Python编译环境

    1.先在CodeBlock中新建C或C++工程. CodeBlock新建工程步骤:File——New——Project——Console applications——C或C++都可——Project所 ...

  4. Xcode搭建Python编译环境

    * {-webkit-tap-highlight-color: rgba(0,0,0,0);}html {-webkit-text-size-adjust: none;}body {font-fami ...

  5. Python(一) 快速配置Python编译环境与第一个py文件程序

    1. Python基本语法在此不熬述. 2. 到管网下载Python 3.6.x 版本,与本机匹配的版本,如本机是 win7 64 python-3.6.5-amd64 3. 下载IDE:Python ...

  6. python编译环境安装指南

    windows系统先安装python解释器: windows版本exe安装文件下载地址:https://www.python.org/ftp/python/2.7.12/python-2.7.12.m ...

  7. Sublime Text3 配置Python3编译环境

    Sublime Text3 配置Python编译环境 进入Sublime Text3 ,然后选择菜单:工具(T)==>编译系统(U)==>新编译系统... 把上面的代码换成如下代码: &q ...

  8. sublime text2建成C语言(C++)编译环境

    四个步骤: 下载安装Sublime text2 for windows 下载安装 MinGW 与 系统变量设置 Sublime Building System 设置 编译测试 一.下载安装Sublim ...

  9. Editplus配置Java、Python、C/C++ (基于VS2010) 编译环境

    1. 为什么要配置EditPlus使其能够编译运行Java.Python.C/C++等程序? EditPlus是一款轻量级(大约2M)的文本编辑器,实际开发中,只需要关联相应的编译工具就可以化身为一个 ...

随机推荐

  1. JavaScript Math对象

    Math对象是JavaScript的一个固有对象,其作用是执行常见的算数任务.该对象的使用并不是像Date,Array对象使用 new关键字来得到对象,而是直接 Math.[{property|met ...

  2. 安卓工程修改包名后 Failed to find provider info for...问题

    安卓工程修改包名后 Failed to find provider info for com.android...provider问题 原因: 1. 多处含包名文件须同时更改 2. Manifest里 ...

  3. 无软驱加载raid驱动安装windows2003及其他微软操作系统

    [转载]http://blog.zol.com.cn/2650/article_2649199.html [另一篇]http://www.blue1000.com/bkhtml/c159/2013-0 ...

  4. sql yog注册码

    Name: AnyRegistration Code: 26f359fc-e3f6-4727-8af1-72a1a4a0819d

  5. mysql 数据sqoop到hive 步骤

    1.hive建表 hive是支持分区的,但是这次建表没有写分区. CREATE TABLE `cuoti_rpt` ( `COURSE_ID` string, `NAME` string, `PERI ...

  6. C++中new的用法

    new int;//开辟一个存放整数的存储空间,返回一个指向该存储空间的地址(即指针) new int(100);//开辟一个存放整数的空间,并指定该整数的初值为100,返回一个指向该存储空间的地址 ...

  7. javascript——可以判断值的类型的函数

    function classof(o){ return Object.prototype.toString.call(0).slice(8,-1); } Function.prototype.getN ...

  8. Perl数组: shift, unshift, push, pop

    pop pop函数会删除并返回数组的最后一个元素. .. ; $fred = pop(@array); # $fred变成9,@array 现在是(5,6,7,8) $barney = pop @ar ...

  9. winform 窗体大小变化时,如何设置使控件一起按照比例变大

    public Form() { InitializeComponent(); + ; float[] factor = new float[count]; ; factor[i++] = Size.W ...

  10. 如何让input之间无空隙

    有如下两个input: <form action="http://www.example.com/index/search" method="get"&g ...