热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【Emacs配置PythonIDE】ConfiguringEmacsasaPythonIDE

0.开头废话在2013年圣诞节期间,我浏览了SwaroopCH写的《AByteofPython》,突然有种相见恨晚的感觉。想起大三大四时候看了两三本Java方面的书籍,云里雾里

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文件试试,如下:

emacs

如图状态栏显示(Python Eldoc Elpy yas || Flymake AC),Python模式下已经包含了yasnippet、flymake、auto-complete等插件了。更多配置请参考ELPY文档。


3. 优化Auto-complete:

auto-complete

如图所示,在对列表a输入dot操作符时,Emacs并没有给出相应的列表方法,Mini Buffer里也出现了警告。这是因为elpy默认使用rope的缘故。

可以使用M-x elpy-rpc-set-backend [RET] jedi [RET]命令,将rope改为jedi。这时,输入dot操作符就可以显示列表对应的方法了。

auto-complete

如图所示,auto-complete不仅给出了相应的方法,还给出了该方法的文档。

如果不想每次都使用命令更改elpy-rpc-set-backend,可以在init.el配置文件中添加一行代码:

(setq elpy-rpc-backend "jedi")


4. 使用yasnippet

输入for,然后按TAB键将自动展开for模板:

yasnippet

更多yasnippet用法可以点击状态栏yas查看。


5. 优化Flymake

使用Flymake语法检测,只能在鼠标悬停到错误所在处才能显示具体错误信息,很不方便。特别是在Terminal下根本无法使用。所以我安装了flymake-cursor.el插件,这个插件将错误信息显示在Mini Buffer中,这样就可以避免使用鼠标。该插件不需要配置代码。效果如下:

flymake

使用flymake还有一个好处就是,如果代码不符合PEP8语法规范,也会提示警告信息,这样对养成良好代码规范很有帮助。由于PEP8有些规范比较陈旧,可以通过配置主目录下~/.config/flake8(自建)文件来自定义,参考flake8文档。


6. 运行Python程序

使用C-c C-c命令,Emacs将调出Python交互界面执行当前代码:

RunPython

如果想使用Python3,可以在init.el配置文件中添加一行代码:

(setq elpy-rpc-python-command "python3")
如果想使用IPython,可以在init.el配置文件中添加一行代码:

(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)
 
 
 
 
 

推荐阅读
  • 本文详细介绍了如何在Linux系统中搭建51单片机的开发与编程环境,重点讲解了使用Makefile进行项目管理的方法。首先,文章指导读者安装SDCC(Small Device C Compiler),这是一个专为小型设备设计的C语言编译器,适合用于51单片机的开发。随后,通过具体的实例演示了如何配置Makefile文件,以实现代码的自动化编译与链接过程,从而提高开发效率。此外,还提供了常见问题的解决方案及优化建议,帮助开发者快速上手并解决实际开发中可能遇到的技术难题。 ... [详细]
  • Python学习:环境配置与安装指南
    Python作为一种跨平台的编程语言,适用于Windows、Linux和macOS等多种操作系统。为了确保本地已成功安装Python,用户可以通过终端或命令行界面输入`python`或`python3`命令进行验证。此外,建议使用虚拟环境管理工具如`venv`或`conda`,以便更好地隔离不同项目依赖,提高开发效率。 ... [详细]
  • 在CentOS上部署和配置FreeSWITCH
    在CentOS系统上部署和配置FreeSWITCH的过程涉及多个步骤。本文详细介绍了从源代码安装FreeSWITCH的方法,包括必要的依赖项安装、编译和配置过程。此外,还提供了常见的配置选项和故障排除技巧,帮助用户顺利完成部署并确保系统的稳定运行。 ... [详细]
  • 在生产环境中进行高效部署与优化 ... [详细]
  • 本文深入解析了 Apache 配置文件 `httpd.conf` 和 `.htaccess` 的优化方法,探讨了如何通过合理配置提升服务器性能和安全性。文章详细介绍了这两个文件的关键参数及其作用,并提供了实际应用中的最佳实践,帮助读者更好地理解和运用 Apache 配置。 ... [详细]
  • Spring Boot 实战(一):基础的CRUD操作详解
    在《Spring Boot 实战(一)》中,详细介绍了基础的CRUD操作,涵盖创建、读取、更新和删除等核心功能,适合初学者快速掌握Spring Boot框架的应用开发技巧。 ... [详细]
  • 本文探讨了如何在C#中实现USB条形码扫描仪的数据读取,并自动过滤掉键盘输入,即使不知道设备的供应商ID(VID)和产品ID(PID)。通过详细的技术指导和代码示例,展示了如何高效地处理条形码数据,确保系统能够准确识别并忽略来自键盘的干扰信号。该方法适用于多种USB条形码扫描仪,无需额外配置设备信息。 ... [详细]
  • Android 图像色彩处理技术详解
    本文详细探讨了 Android 平台上的图像色彩处理技术,重点介绍了如何通过模仿美图秀秀的交互方式,利用 SeekBar 实现对图片颜色的精细调整。文章展示了具体的布局设计和代码实现,帮助开发者更好地理解和应用图像处理技术。 ... [详细]
  • 本文详细介绍了使用响应文件在静默模式下安装和配置Oracle 11g的方法。硬件要求包括:内存至少1GB,具体可通过命令`grep -i memtotal /proc/meminfo`进行检查。此外,还提供了详细的步骤和注意事项,确保安装过程顺利进行。 ... [详细]
  • 在Linux环境下编译安装Heartbeat时,常遇到依赖库缺失的问题。为确保顺利安装,建议预先通过yum安装必要的开发库,如glib2-devel、libtool-ltdl-devel、net-snmp-devel、bzip2-devel和ncurses-devel等。这些库是编译过程中不可或缺的组件,能够有效避免编译错误,确保Heartbeat的稳定运行。 ... [详细]
  • 【前端开发】深入探讨 RequireJS 与性能优化策略
    随着前端技术的迅速发展,RequireJS虽然不再像以往那样吸引关注,但其在模块化加载方面的优势仍然值得深入探讨。本文将详细介绍RequireJS的基本概念及其作为模块加载工具的核心功能,并重点分析其性能优化策略,帮助开发者更好地理解和应用这一工具,提升前端项目的加载速度和整体性能。 ... [详细]
  • 如何在Java中高效构建WebService
    本文介绍了如何利用XFire框架在Java中高效构建WebService。XFire是一个轻量级、高性能的Java SOAP框架,能够简化WebService的开发流程。通过结合MyEclipse集成开发环境,开发者可以更便捷地进行项目配置和代码编写,从而提高开发效率。此外,文章还详细探讨了XFire的关键特性和最佳实践,为读者提供了实用的参考。 ... [详细]
  • 本文深入探讨了 Python Watchdog 库的使用方法和应用场景。通过详细的代码示例,展示了如何利用 Watchdog 监控文件系统的变化,包括文件的创建、修改和删除等操作。文章不仅介绍了 Watchdog 的基本功能,还探讨了其在实际项目中的高级应用,如日志监控和自动化任务触发。读者将能够全面了解 Watchdog 的工作原理及其在不同场景下的应用技巧。 ... [详细]
  • 深入解析:RKHunter与AIDE在入侵检测中的应用与优势
    本文深入探讨了RKHunter与AIDE在入侵检测领域的应用及其独特优势。通过对比分析,详细阐述了这两种工具在系统完整性验证、恶意软件检测及日志文件监控等方面的技术特点和实际效果,为安全管理人员提供了有效的防护策略建议。 ... [详细]
  • voc生成xml 代码
    目录 lxmlwindows安装 读取示例 可视化 生成示例 上面是代码,下面有调用示例 api调用代码,其实只有几行:这个生成代码也很简 ... [详细]
author-avatar
好富饶_152
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有