【Emacs配置Python IDE】Configuring Emacs as a Python IDE
来源:互联网 发布:windows文件丢失 编辑:程序博客网 时间:2024/05/16 07:58
0. 开头废话
在2013年圣诞节期间,我浏览了Swaroop C H写的《A Byte of Python》,突然有种相见恨晚的感觉。想起大三大四时候看了两三本Java方面的书籍,云里雾里,不得要领。只记住了《Head First Java》里面比较面向对象和面向过程的一个例子,感性上认识了OOP在开发过程中的便利。目前在读Mark Lutz写的《Learning Python》,有点意外的是,在学习Python的过程中,竟然理解了以前在学习Java过程中的很多疑惑,比如this关键字。虽然目前对Python的学习只是入门,不过隐约中已经感觉到Python这种动态语言的灵活,不管是从开发角度还是从学习角度,都很简洁。
俗话说,工欲善其事,必先利其器。在学习Python之前,不小心上了Emacs这条道。当时只是为了找一款Win7和Ubuntu下都好用的文本编辑器,在尝试了Geany,JEdit,Sublime...等编辑器之后,还是觉得Ubuntu 12.04自带的Emacs确实强大。正好Swaroop C H也写了一篇重回Emacs的博文,于是就看了几章《Sams Teach Yourself Emacs in 24 Hours》,这样Emacs就入门了。
在尝试了Swaroop C H的配置后,只知其然而不知所以然,所以想从零开始,一个一个添加相关功能。刚入门就尝试配置Emacs Python IDE确实有很大挑战,在折腾Emacs过程中也走了不少弯路,所以写下来以备后用。
PS :本来开这个博客是想记录学习过程,不过自从使用了Github Pages,我也有了自己的博客网站,仅以此文作为祭奠,以后所有想法全都写到个人博客上了。目前博客StickMind还很简陋,虽不忍直视,不过还要推荐下,希望同样走在自学道路上的朋友们可以一起交流。
PS 2:本文所谈的配置已很陈旧,其实通篇只是围绕Emacs插件elpy-mode来设置Python支持的,而elpy插件的依赖都有变动,所以可以直接查看elpy-mode官方文档。另外,如果不嫌丑陋,也可以看看我的配置。
1. Python环境
Emacs实现的功能是建立在外部Python环境基础上的,所以在配置Emacs之前,需要安装一些Python模块。
安装pip,很好用的Python包管理工具,用pip安装Python模块很方便。
$sudo apt-get install python-pip #Python2$sudo apt-get install python3-pip #Python3
接下来,就可以用pip安装其他模块了:
$sudo pip install elpy rope jedi #Python2$sudo pip3 install elpy rope_py3k jedi #Python3
这样elpy、rope、jedi就安装好了
注意:因为我这里pypi被墙了(真坑爹啊),多亏阿里云开源镜像的帮助,可以去这里下载pip最新安装包,目前是pip-1.5.4.tar.gz。手动安装pip如下:
#切换到pip-1.5.4.tar.gz所在目录$tar -zxvf pip-1.5.4.tar.gz$cd pip-1.5.4$sudo python setup.py install #Python2$sudo python3 setup.py install #Python3
然后按照阿里云开源镜像帮助,更改pip默认安装源。在~/.pip/pip.conf(自建)文件中添加或修改:
[global]index-url = http://mirrors.aliyun.com/pypi/simple/
2. 配置Emacs
在~/.emacs.d/init.el中初始化package.el并添加插件源:
(require 'package)(setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/") ("marmalade" . "http://marmalade-repo.org/packages/") ("melpa" . "http://melpa.milkbox.net/packages/")))(package-initialize)重启Emacs,使用M-x package-install [RET] elpy [RET]来安装(RET即Enter键)。也可以使用命令M-x list-packages获取插件列表,使用C-s找到elpy来安装。
然后,在init.el文件中添加如下配置:
;; Configuration of Python IDE;; https://github.com/jorgenschaefer/elpy(require 'elpy nil t)(elpy-enable)
重启Emacs。至此Python IDE就算完成了。新建一个Python文件试试,如下:
如图状态栏显示(Python Eldoc Elpy yas || Flymake AC),Python模式下已经包含了yasnippet、flymake、auto-complete等插件了。更多配置请参考ELPY文档。
3. 优化Auto-complete:
如图所示,在对列表a输入dot操作符时,Emacs并没有给出相应的列表方法,Mini Buffer里也出现了警告。这是因为elpy默认使用rope的缘故。
可以使用M-x elpy-rpc-set-backend [RET] jedi [RET]命令,将rope改为jedi。这时,输入dot操作符就可以显示列表对应的方法了。
如图所示,auto-complete不仅给出了相应的方法,还给出了该方法的文档。
如果不想每次都使用命令更改elpy-rpc-set-backend,可以在init.el配置文件中添加一行代码:
(setq elpy-rpc-backend "jedi")
4. 使用yasnippet
输入for,然后按TAB键将自动展开for模板:
更多yasnippet用法可以点击状态栏yas查看。
5. 优化Flymake
使用Flymake语法检测,只能在鼠标悬停到错误所在处才能显示具体错误信息,很不方便。特别是在Terminal下根本无法使用。所以我安装了flymake-cursor.el插件,这个插件将错误信息显示在Mini Buffer中,这样就可以避免使用鼠标。该插件不需要配置代码。效果如下:
使用flymake还有一个好处就是,如果代码不符合PEP8语法规范,也会提示警告信息,这样对养成良好代码规范很有帮助。由于PEP8有些规范比较陈旧,可以通过配置主目录下~/.config/flake8(自建)文件来自定义,参考flake8文档。
6. 运行Python程序
使用C-c C-c命令,Emacs将调出Python交互界面执行当前代码:
如果想使用Python3,可以在init.el配置文件中添加一行代码:
(setq elpy-rpc-python-command "python3")
(elpy-use-ipython)
————————————————————————————————————————————————————————————————
以上介绍的已经够多了,我也不想再写了,更多Emacs技巧可以在网上发现,像Eclipse等IDE能有的功能,Emacs都可以实现。很多优秀的Emacs插件都可以直接通过M-x list-packages安装。一个简单的配置文件,就可以把Python IDE配置好,Emacs也不是那么难啊!
附录
以下是上文介绍的init.el配置文件:
(require 'package)(setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/") ("marmalade" . "http://marmalade-repo.org/packages/") ("melpa" . "http://melpa.milkbox.net/packages/")))(package-initialize);; Configuration of Python IDE;; https://github.com/jorgenschaefer/elpy(require 'elpy nil t)(elpy-enable)(setq elpy-rpc-backend "jedi")(setq elpy-rpc-python-command "python3")(elpy-use-ipython)
- 【Emacs配置Python IDE】Configuring Emacs as a Python IDE
- Configuring Emacs as a Python IDE
- Emacs as a Python IDE
- Emacs as a powerful Python IDE
- How-to-configure-emacs-as-a-Python-IDE
- emacs python ide
- Emacs IDE for Python
- Emacs下配置Python IDE环境
- Emacs as Your IDE
- 打造Emacs成为Python的IDE
- Emacs中打造强大的Python IDE
- Emacs-ide
- Emacs as a C/C++ Editor/IDE (Part 2)
- Python -- Make vim as a python IDE
- Emacs 降魔系列之制作 Python IDE
- Turning vim as a modern python IDE
- VIM as Python IDE
- vim as python IDE
- ZOJ 1088 System Overload(约瑟夫问题通用公式)
- (11)Java笔记11之继承
- iOS中——iOS网络通信中的同步请求和异步请求
- Shape of HDU 2108
- ARC状态下assign,copy,weak,strong参数用法
- 【Emacs配置Python IDE】Configuring Emacs as a Python IDE
- django 实现未经登录验证的url过滤
- linux下socket和MySQL数据库编程
- UVA - 10055 - Hashmat the Brave Warrior
- C++模板编程->模板判断逻辑
- C#——数据类型转换
- windows编程(四)使用位图
- POJ 3259 Wormholes
- Java 中的接口