コマンドラインから実行すると(emacs filename.py
)flymakeとpylintは完全に連携します。エラーは適切に強調表示されます。(テキストモードであるため、ツールチップをホバーしてエラーの詳細を取得することはできませんが。)
GUI(Carbon Emacs)から実行すると、Flymakeはすぐに戻り、ファイルの最初の行がエラー「in <module>
」で強調表示されます。最初の行は、「Hello World」スクリプトでもエラーを示しています。)マウスでナビゲートし(知っている、知っている)、ツールチップを使用して詳細を取得できるように、GUIモードで正しく機能させたい。 pylintでエラーが報告されました。
pylintを" easy_install pylint
"でインストールしましたが、pylintおよびepylintスクリプトは" ~/py/scripts
"にあります。そのディレクトリを.bashrcのPATHに追加しました。
export PATH=$PATH:~/py/scripts
(私の.profileは私の.bashrcへのシンボリックリンクです。)
Emacs-GUIが.bashrcからパスをロードしていないことに気付いたので、ターミナルに表示される完全なPATHを使用してPATH変数を設定し、〜/ .MacOSX/environment.plistファイルを作成しました。
Emacs-GUIで" (getenv "PATH")
"出力は正しく表示されます:
"/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/usr/X11/bin:/Users/schof/py/scripts:/usr/X11R6/bin"
同様に、「C-h v exec-path
」の出力は正しく表示されます。
("/usr/bin" "/bin" "/usr/sbin" "/sbin" "/usr/local/bin" "/usr/local/git/bin" "/usr/X11/bin" "/Users/schof/py/scripts" "/Applications/Emacs.app/Contents/MacOS/libexec" "/Applications/Emacs.app/Contents/MacOS/bin" "/usr/X11R6/bin")
それは私がこれをどのように解決すべきかについてのさらなるアイデアを私に残しません。私は決してemacsの第一人者ではないので、ここで明らかな何かを見逃している可能性があります。詳細については、お気軽にお問い合わせください。
OS X 10.6.7; Carbon Emacs 22.3.1; ピリント0.23.0。
.emacsのFlymake/Pylintコード:
(when (load "flymake" t)
(defun flymake-pylint-init ()
(let* ((temp-file (flymake-init-create-temp-buffer-copy
'flymake-create-temp-inplace))
(local-file (file-relative-name
temp-file
(file-name-directory buffer-file-name))))
(list "epylint" (list local-file))))
(add-to-list 'flymake-allowed-file-name-masks
'("\\.py\\'" flymake-pylint-init)))
;; Auto-start flymake-mode when you go into python-mode
(add-hook 'python-mode-hook
'(lambda ()
(setq python-indent 4)
(flymake-mode)))
@sanityincの回答に応じて2011-04-05を更新します。
flymakeの詳細レベル3の出力*messages*
:(これは問題の原因を私に明らかにしません。)
starting syntax check as new-line has been seen
flymake is running: nil
file /Users/schof/pytest.py, init=flymake-pylint-init [3 times]
create-temp-inplace: file=/Users/schof/pytest.py temp=/Users/schof/pytest_flymake.py
saved buffer pytest.py in file /Users/schof/pytest_flymake.py
started process 3221, command=(epylint pytest_flymake.py), dir=/Users/schof/
received 704 byte(s) of output from process 3221
file /Users/schof/pytest.py, init=flymake-pylint-init
parsed 'Traceback (most recent call last):', no line-err-info
parse line: file-idx=2 line-idx=3 file=/Users/schof/py/scripts/epylint line=4 text=in <module>
get-real-file-name: file-name=/Users/schof/py/scripts/epylint real-name=~/py/scripts/epylint
parsed ' File "/Users/schof/py/scripts/epylint", line 4, in <module>', got line-err-info
parsed ' import pkg_resources', no line-err-info
parse line: file-idx=2 line-idx=3 file=/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/pkg_resources.py line=2556 text=in <module>
get-real-file-name: file-name=/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/pkg_resources.py real-name=/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/pkg_resources.py
parsed ' File "/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/pkg_resources.py", line 2556, in <module>', got line-err-info
parsed ' working_set.require(__requires__)', no line-err-info
parse line: file-idx=2 line-idx=3 file=/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/pkg_resources.py line=620 text=in require
get-real-file-name: file-name=/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/pkg_resources.py real-name=/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/pkg_resources.py
parsed ' File "/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/pkg_resources.py", line 620, in require', got line-err-info
parsed ' needed = self.resolve(parse_requirements(requirements))', no line-err-info
parse line: file-idx=2 line-idx=3 file=/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/pkg_resources.py line=518 text=in resolve
get-real-file-name: file-name=/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/pkg_resources.py real-name=/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/pkg_resources.py
parsed ' File "/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/pkg_resources.py", line 518, in resolve', got line-err-info
parsed ' raise DistributionNotFound(req) # XXX put more info here', no line-err-info
parsed 'pkg_resources.DistributionNotFound: pylint==0.23.0', no line-err-info
file /Users/schof/pytest.py, init=flymake-pylint-init
process 3221 exited with code 1
cleaning up using flymake-simple-cleanup
deleted file /Users/schof/pytest_flymake.py
created an overlay at (1-18)
pytest.py: 4 error(s), 0 warning(s) in 0.47 second(s)
比較のために、emacsテキストモードから実行した場合のflymakeverbosity3の出力を次に示します。「helloworld」ファイルはすべてのpylintテストに合格しました。
starting syntax check as new-line has been seen
flymake is running: nil
file /Users/schof/pytest.py, init=flymake-pylint-init [3 times]
create-temp-inplace: file=/Users/schof/pytest.py temp=/Users/schof/pytest_flymake.py
saved buffer pytest.py in file /Users/schof/pytest_flymake.py
started process 3395, command=(epylint pytest_flymake.py), dir=/Users/schof/
file /Users/schof/pytest.py, init=flymake-pylint-init
process 3395 exited with code 0
cleaning up using flymake-simple-cleanup
deleted file /Users/schof/pytest_flymake.py
pytest.py: 0 error(s), 0 warning(s) in 0.30 second(s)