即使已经通过pip安装了pyflake,Emacs elpy Flymake也找不到pyflakes

时间:2015-07-23 03:03:11

标签: python emacs pip macports flymake

使用macports pip-2.7安装pyflakes后,我可以使用命令行从pip安装目录手动运行它:

python /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pyflakes myfile.py

但是,我试图让我的mac emacs环境设置为elpy,而flymake似乎无法找到pyflakes,当我以elpy模式打开python文件时给我一个对话框说:

Flymake: Failed to launch syntax check process 'pyflakes' (with args myfile.py): Searching for program: no such file or directory, pyflakes. Flymake will be switched off.

我可以进入/ opt / local / bin并尝试编写我自己的运行上述python命令的可执行文件。但这看起来很糟糕,必须有一个正确的方法来安装/设置pyflakes,这样flymake可以在不手动创建包装脚本的情况下找到命令,不是吗?

1 个答案:

答案 0 :(得分:3)

  

我可以使用命令行从pip安装目录手动运行它,如:

python /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pyflakes myfile.py

除非此目录位于$PATH,否则Emacs无法知道在哪里找到pyflakes

一种选择是创建符号链接,例如

ln -s /opt/local/.../python2.7/site-packages/pyflakes /opt/local/bin/pyflakes

当然,您必须使用完整路径。为了便于阅读,我缩短了它。这在Linux机器上相对常见,但我不知道它在OSX上的使用范围有多广。

我更喜欢的另一个选项是使用pip install's --user option重新安装pyflakes

--user 
     

安装到您的平台的Python用户安装目录。通常是Windows上的〜/ .local /或%APPDATA%Python。 (有关完整详细信息,请参阅site.USER_BASE的Python文档。)

--user非常适合安装您可能希望独立于任何特定项目运行的内容,例如pyflakes。它将内容安装到您的主目录而不是系统目录,因此您不需要任何提升的权限来使用它。

您可能需要将用户位置添加到$PATH变量中,但您只需要执行一次此操作。使用pip install --user安装的任何未来工具都将立即可用。

在我的Linux机器上,我必须添加到$PATH的目录是~/.local/bin/