將 emacs 配置成好用的python IDE環(huán)境
參考的 blog
安裝需要的安裝包
首先配置虛擬環(huán)境:
- 安裝virtualenvwrapper 可以使用apt install virtualenvwrapper
- 創(chuàng)建一個(gè)虛擬環(huán)境 mkvirtualenv -p /usr/bin/python3 python3
然后就可以在python3的環(huán)境下操作,此時(shí)可能這個(gè)命令會(huì)報(bào)錯(cuò)异逐,這就需要執(zhí)行以下步驟:
- 將以下字段添加到~/.bashrc 之中:
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
- 使之生效股冗,就在terminal中運(yùn)行 source ~/.bashrc
- 列出虛擬環(huán)境列表:workon 或者 lsvirtualenv
- 再新建一個(gè)虛擬環(huán)境斩松,可以使用:mkvirtualenv
- 切換虛擬環(huán)境肥隆,可以使用:workon (虛擬環(huán)境名稱)
- 刪除虛擬環(huán)境站绪,可以使用:rmvirtualenv (虛擬環(huán)境名稱)
- 離開虛擬環(huán)境蔓肯,可以使用:deactivate
對(duì)于python:
- 需要確保安裝了pip遂鹊。
- 需要安裝 pylint,elpy蔗包,jedi 和 rope秉扑,使用pip install jedi elpy rope pylint
pylint就不說(shuō)了,看名字就知道调限。jedi是用于自動(dòng)補(bǔ)全舟陆,rope是一個(gè)用于重構(gòu)的庫(kù)。
對(duì)于 emacs:
打開emacs耻矮,然后是M-x package-list-packages 似乎沒(méi)有看到需要安裝的包秦躯,這就需要編輯一下配置文件
打開 ~/.emacs.d/init.el , 如果沒(méi)有就新建一個(gè)裆装,加上倉(cāng)庫(kù)源地址的字段:
(setq package-archives '(
("gnu" . "http://elpa.gnu.org/packages/")
("melpa" . "http://melpa.milkbox.net/packages/")
))現(xiàn)在重復(fù)第二步踱承,就可以看到emacs的插件列表,此時(shí)我們需要安裝以下插件:
elpy
flycheck
company-jedi
virtualenvwrapper將自動(dòng)補(bǔ)全設(shè)置成jedi:
;; enable elpy jedi backend
(setq elpy-rpc-backend "jedi")
- 設(shè)置自動(dòng)擴(kuò)展哨免,比方說(shuō)茎活,for之后按下如下所示的組合鍵,就自動(dòng)展開為一個(gè)for語(yǔ)句
;; Fixing a key binding bug in elpy
(define-key yas-minor-mode-map (kbd "C-c k") 'yas-expand)
- 用于重構(gòu)铁瞒,比方說(shuō)妙色,將光標(biāo)放在某個(gè)單詞上,按下如下所示的組合鍵慧耍,就選中了當(dāng)前文件中所有的這個(gè)單詞身辨。
;; Fixing another key binding bug in iedit mode
(define-key global-map (kbd "C-c o") 'iedit-mode)
秀一下我當(dāng)前使用的配置:
;;; package --- summary or add python emacs mode: elpy
;; add repository
(require 'package)
(setq package-archives '(
("gnu" . "http://elpa.gnu.org/packages/")
("melpa" . "http://melpa.milkbox.net/packages/")
))
(add-to-list 'package-archives
'("marmalade" . "http://marmalade-repo.org/packages/"))
(package-initialize)
;; automatical complete: company
(require 'company)
(add-hook 'after-init-hook 'global-company-mode); global enable
(setq company-show-numbers t); display serial number
(setq company-idle-delay 0.2); menu delay
(setq company-minimum-prefix-length 1); start completelyness number
;; elpy-- main actor
(require 'elpy)
(elpy-enable)
;; enable elpy jedi backend
(setq elpy-rpc-backend "jedi")
;; Fixing a key binding bug in elpy
(define-key yas-minor-mode-map (kbd "C-c k") 'yas-expand)
;; Fixing another key binding bug in iedit mode
(define-key global-map (kbd "C-c o") 'iedit-mode)
;; grammal check: flycheck
(add-hook 'after-init-hook #'global-flycheck-mode);global enable
; close flymake, start flycheck
(when (require 'flycheck nil t)
(setq elpy-modules(delq 'elpy-module-flymake elpy-modules))
(add-hook 'elpy-mode-hook 'flycheck-mode))
;; virutal environment: virtualenvwrapper
(require 'virtualenvwrapper)
(venv-initialize-interactive-shells)
(venv-initialize-eshell)
(setq venv-location "~/pyvirtualenv/"); setup virtual environment folder
;; if there multiple folder:
;; (setq venv-location '("~/myvenv-1/"
;; "~/myvenv-2/"))
;; M-x venv-workon open virtual environment
;;; Commentary:
;; 自動(dòng)完成
(require 'company)
(global-company-mode t); 全局開啟
(setq company-idle-delay 0.2;菜單延遲
company-minimum-prefix-length 1; 開始補(bǔ)全字?jǐn)?shù)
company-require-match nil
company-dabbrev-ignore-case nil
company-dabbrev-downcase nil
company-show-numbers t; 顯示序號(hào)
company-transformers '(company-sort-by-backend-importance)
company-continue-commands '(not helm-dabbrev)
)
; 補(bǔ)全后端使用anaconda
(add-to-list 'company-backends '(company-anaconda :with company-yasnippet))
; 補(bǔ)全快捷鍵
(global-set-key (kbd "<C-tab>") 'company-complete)
; 補(bǔ)全菜單選項(xiàng)快捷鍵
(define-key company-active-map (kbd "C-n") 'company-select-next)
(define-key company-active-map (kbd "C-p") 'company-select-previous)
;; 在python模式中自動(dòng)啟用
(add-hook 'python-mode-hook 'anaconda-mode)
很多東西還是沒(méi)搞清楚丐谋,還需要繼續(xù)努力。