Emacs 配置 Python 编程环境
python编程环境设置涉及到:自动完成、语法检查、虚拟环境。
为了不把系统搞乱,在python的虚拟环境中安装相关的插件。
一、安装python虚拟环境 virtualenvwrapper
sudo apt-get virtualenvwrapper
然后创建一个虚拟环境:
$ mkvirtualenv -p /usr/bin/python3 test
下面开始在test这个虚拟环境中操作:
先看看有哪些包:
$ pip list pip (1.5.6) setuptools (5.5.1)
可以看到只有2个包。
以下开始在虚拟环境中安装!
二、在虚拟环境中安装相关包 jedi、pylint
(test)a@pc:$ pip install jedi pylint
说明:
jedi --------- python的自动补全;
pylint ------- python的语法检查;
安装完后看看装了哪些东西:
$ pip list astroid (1.3.6) jedi (0.9.0) logilab-common (0.63.2) pip (1.5.6) pylint (1.4.3) setuptools (5.5.1) six (1.9.0)
三、在 emacs 中安装相关插件 elpy、flycheck、company-jedi、virtualenvwrapper
M-x package-list-packages
安装
- elpy
- flycheck
- company-jedi
- virtualenvwrapper
四、修改emacs配置文件
;; 添加仓库 (require 'package) (setq package-archives '( ("gnu" . "http://elpa.gnu.org/packages/") ("melpa" . "http://melpa.milkbox.net/packages/") )) (package-initialize)
;; 自动完成:company (require 'company) (add-hook 'after-init-hook 'global-company-mode); 全局开启 (setq company-show-numbers t); 显示序号 (setq company-idle-delay 0.2); 菜单延迟 (setq company-minimum-prefix-length 1); 开始补全字数 ;; elpy---主角 (require 'elpy) (elpy-enable) ;; 语法检查:flycheck (add-hook 'after-init-hook #'global-flycheck-mode);全局开启 ; 关闭flymake,使用flycheck (when (require 'flycheck nil t) (setq elpy-modules(delq 'elpy-module-flymake elpy-modules)) (add-hook 'elpy-mode-hook 'flycheck-mode)) ;; 虚拟环境: virtualenvwrapper (require 'virtualenvwrapper) (venv-initialize-interactive-shells) (venv-initialize-eshell) (setq venv-location "~/pyvirtualenv/");设置虚拟环境目录 ;; 如果有多个目录: ;; (setq venv-location '("~/myvenv-1/" ;; "~/myvenv-2/")) ;; M-x venv-workon 打开虚拟环境
这样一个最简单的python编程环境就配置好了。
注:在家目录下的.bashrc文件中加入以下2行
#tells virtualenvwrapper where to store the virtualenvs that will be created and used. export WORKON_HOME=~/pyvirtualenv #runs the shell script to set up the virtualenvwrapper commands and should point to the location where virtualenvwrapper was installed. source /usr/share/virtualenvwrapper/virtualenvwrapper.sh
pyvirtualenv是放置虚拟环境的目录,可以改成自己想要的名字。这样virtualenvwrapper用起来更灵活些。
相关链接:
https://github.com/jorgenschaefer/elpy
http://www.pylint.org/#myCarousel
还有种方式:
从package.el安装好anaconda-mode和company-anaconda就可以了!可以不用装jedi。
然后在虚拟环境总 pip install jedi==0.8.1 json-rpc==1.8.1 service_factory==0.1.2
;; 自动完成 (require 'company) (global-company-mode t); 全局开启 (setq company-idle-delay 0.2;菜单延迟 company-minimum-prefix-length 1; 开始补全字数 company-require-match nil company-dabbrev-ignore-case nil company-dabbrev-downcase nil company-show-numbers t; 显示序号 company-transformers '(company-sort-by-backend-importance) company-continue-commands '(not helm-dabbrev) ) ; 补全后端使用anaconda (add-to-list 'company-backends '(company-anaconda :with company-yasnippet)) ; 补全快捷键 (global-set-key (kbd "<C-tab>") 'company-complete) ; 补全菜单选项快捷键 (define-key company-active-map (kbd "C-n") 'company-select-next) (define-key company-active-map (kbd "C-p") 'company-select-previous) ;; 在python模式中自动启用 (add-hook 'python-mode-hook 'anaconda-mode)
然后在虚拟环境总 pip install jedi==0.8.1 json-rpc==1.8.1 service_factory==0.1.2