Pylint 无法与 OS X 上的 Emacs GUI 一起使用;从命令行工作

2024-03-17

从命令行运行时(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 加载路径,因此我创建了一个 ~/.MacOSX/environment.plist 文件,使用我在终端中看到的完整 PATH 设置 PATH 变量。

现在在 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 专家,所以我可能在这里遗漏了一些明显的东西;请随时询问更多详情。

操作系统 X 10.6.7;碳 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)))

2011-04-05 更新以回应@sanityinc的回答:

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 运行时 Flymake verbosity 3 的输出文本模式。 “hello world”文件通过了所有 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) 

为了更清楚地看到出了什么问题,增加 Flymake 的日志级别,然后查看*messages*:

(setq flymake-log-level 3)

没有这些信息,我不会推测可能的问题。

有一个技巧可以避免environment.plist顺便说一句;你可以让 Emacs 向你的常规 shell 询问你的首选路径:

(defun set-exec-path-from-shell-PATH ()
  (let ((path-from-shell (replace-regexp-in-string
                          "[ \t\n]*$"
                          ""
                          (shell-command-to-string "$SHELL --login -i -c 'echo $PATH'"))))
    (setenv "PATH" path-from-shell)
    (setq exec-path (split-string path-from-shell path-separator))))

(when (and window-system (eq system-type 'darwin))
  ;; When started from Emacs.app or similar, ensure $PATH
  ;; is the same the user would see in Terminal.app
  (set-exec-path-from-shell-PATH))

(这是从我的 Emacs 配置 https://github.com/purcell/emacs.d,其中有一堆 Flymake 代码,包括使用 python 的配置pyflakes,所以你可能想看一下。)

Update:现在您已经添加了详细输出,我发现您的 ~/py/epylint 程序找不到pkg_resources,这指向PYTHONPATH错了。因此,使用上述技术的变体,尝试以下操作:

(defun setenv-from-shell (varname)
  (setenv varname (replace-regexp-in-string
                   "[ \t\n]*$"
                   ""
                   (shell-command-to-string (concat "$SHELL --login -i -c 'echo $" varname "'")))))

(setenv-from-shell "PYTHONPATH")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pylint 无法与 OS X 上的 Emacs GUI 一起使用;从命令行工作 的相关文章

  • 使用 pygame 显示 unicode 符号

    我检查了其他答案 但不明白为什么我的代码错误地显示 This is what I currently see https i stack imgur com 8tNIK png 这是关于文本渲染的相关代码 font pygame font
  • 如何检查python xlrd库中的excel文件是否有效

    有什么办法与xlrd库来检查您使用的文件是否是有效的 Excel 文件 我知道还有其他库可以检查文件头 我可以使用文件扩展名检查 但为了多平台性我想知道是否有任何我可以使用的功能xlrd库本身在尝试打开文件时可能会返回类似 false 的内
  • Kivy - 有所有颜色名称的列表吗?

    在 Kivy 中 小部件 color属性允许输入其值作为字符串颜色名称 也 例如在 kv file Label color red 是否有所有可能的颜色名称的列表 就在这里 来自Kivy 的文档 https kivy org doc sta
  • Python 2.7 中的断言对我来说不起作用示例assertIn

    我的 Mac 上安装了 python 2 7 通过在终端中运行 python v 进行验证 当我尝试使用任何新的 2 7 断言方法时 我收到 AtributeError 我看过http docs python org 2 library u
  • pyspark 数据框中的自定义排序

    是否有推荐的方法在 pyspark 中实现分类数据的自定义排序 我理想地寻找 pandas 分类数据类型提供的功能 因此 给定一个数据集Speed列 可能的选项是 Super Fast Fast Medium Slow 我想实现适合上下文的
  • Python 中的流式传输管道

    我正在尝试使用 Python 将 vmstat 的输出转换为 CSV 文件 因此我使用类似的方法转换为 CSV 并将日期和时间添加为列 vmstat 5 python myscript py gt gt vmstat log 我遇到的问题是
  • 如果未引发异常,则通过 Python 单元测试

    在Python中unittest框架 是否有一种方法可以在未引发异常的情况下通过单元测试 否则会因 AssertRaise 而失败 如果我正确理解你的问题 你could做这样的事情 def test does not raise on va
  • emacs 去掉 shell 中的所有 ansi 颜色代码

    我在 OS X 上使用 emacs 24 但遇到了一个奇怪的问题 我看不到任何颜色代码 Emacs 似乎只是忽略它们 我的动机是查看 C 项目的 cmake llvm 和 googletest 框架的彩色输出 我想在编译模式下查看颜色 但是
  • Gspread如何复制sheet

    在 Stackoverflow 上进行谷歌搜索和搜索后 我想我找不到有关如何复制现有工作表 现有模板工作表 并将其保存到另一个工作表中的指南 根据文档 有重复表 https gspread readthedocs io en latest
  • Django send_mail SMTPSenderRefused 530 与 gmail

    一段时间以来 我一直在尝试使用 Django 从我正在开发的网站接收电子邮件 现在 我还没有部署它 并且我正在使用Django开发服务器 我不知道这是否会影响它 这是我的 settings py 配置 EMAIL BACKEND djang
  • 使用Python计算目录的大小?

    在我重新发明这个特殊的轮子之前 有没有人有一个很好的例程来使用 Python 计算目录的大小 如果例程能够很好地以 Mb Gb 等格式格式化大小 那就太好了 这会遍历所有子目录 总结文件大小 import os def get size s
  • Matplotlib 中 x 轴标签的频率和旋转

    我在下面编写了一个简单的脚本来使用 matplotlib 生成图形 我想将 x tick 频率从每月增加到每周并轮换标签 我不知道从哪里开始 x 轴频率 我的旋转线产生错误 TypeError set xticks got an unexp
  • 使用 Pandas 计算 delta 列

    我有一个数据框 如下所示 Name Variable Field A 2 3 412 A 2 9 861 A 3 5 1703 B 3 5 1731 A 4 0 2609 B 4 0 2539 A 4 6 2821 B 4 6 2779 A
  • ANTLR 获取并拆分词法分析器内容

    首先 对我的英语感到抱歉 我还在学习 我为我的框架编写 Python 模块 用于解析 CSS 文件 我尝试了 regex ply python 词法分析器和解析器 但我发现自己在 ANTLR 中 第一次尝试 我需要解析 CSS 文件中的注释
  • 从 NumPy 数组到 Mat 的 C++ 转换 (OpenCV)

    我正在围绕 ArUco 增强现实库 基于 OpenCV 编写一个薄包装器 我试图构建的界面非常简单 Python 将图像传递给 C 代码 C 代码检测标记并将其位置和其他信息作为字典元组返回给 Python 但是 我不知道如何在 Pytho
  • 动态过滤 pandas 数据框

    我正在尝试使用三列的阈值来过滤 pandas 数据框 import pandas as pd df pd DataFrame A 6 2 10 5 3 B 2 5 3 2 6 C 5 2 1 8 2 df df loc df A gt 0
  • 如何与其他用户一起使用 pyenv?

    如何与其他用户一起使用 pyenv 例如 如果我在用户 test 的环境中安装了 pyenv 则当我以 test 身份登录时可以使用 pyenv 但是 当我以其他用户 例如 root 身份登录时如何使用 pyenv 即使你这么做了 我也会s
  • 从 pandas DataFrame 中删除少于 K 个连续 NaN

    我正在处理时间序列数据 我在从数据帧列中删除小于或等于阈值的连续 NaN 时遇到问题 我尝试查看一些链接 例如 标识连续 NaN 出现的位置以及计数 Pandas NaN 孔的游程长度 https stackoverflow com que
  • 如何为不同操作系统/Python 版本编译 Python C/C++ 扩展?

    我注意到一些成熟的Python库已经为大多数架构 Win32 Win amd64 MacOS 和Python版本提供了预编译版本 针对不同环境交叉编译扩展的标准方法是什么 葡萄酒 虚拟机 众包 我们使用虚拟机和Hudson http hud
  • Apache Beam Pipeline 写表后查询表

    我有一个 Apache Beam Dataflow 管道 它将结果写入 BigQuery 表 然后我想查询该表以获取管道的单独部分 但是 我似乎无法弄清楚如何正确设置此管道依赖性 我编写的新表 然后想要查询 与一个单独的表连接以进行某些过滤

随机推荐

  • 如何让 SpannableStringBuilder 附加格式化字符串内的范围?

    背景 假设我使用 SpannableStringBuilder 将多个内容附加到其中 其中之一是我从 strings xml 文件格式化的字符串 该文件内部有一个跨度 SpannableStringBuilder stringBuilder
  • 在 HTML 页面中显示 PHP 回显消息

    您好 我是网络开发的新手 我正在尝试在 html 页面中显示来自 php 文件的回显消息 PHP 文件 其他文件
  • 如何使用 .htaccess 获得漂亮的链接[重复]

    这个问题在这里已经有答案了 可能的重复 htaccess 创建友好的 URL 需要帮助 https stackoverflow com questions 3033407 htacces to create friendly urls he
  • 如何从 Facebook 应用程序发布到 Facebook 页面?

    我想发布来自的图像数据脸书应用程序 to 脸书页面 我尝试使用流 发布 我能够发布图像 但它已被弃用 而且我也无法发帖link 使用stream publish发布的Curl请求如下 卷曲 F access token dsdsdsd F
  • 无法反序列化当前 JSON 数组(例如 [1,2,3])

    我正在尝试读取我的 JSON 结果 这是我的根对象 public class RootObject public int id get set public bool is default get set public string nam
  • 使用 Jquery 首次单击时禁用提交按钮

    我目前有一个附加到提交按钮的灯箱弹出窗口 仅在第一次单击提交按钮时显示 基本上 在有人提交表单之前 我们希望他们在点击提交按钮时看到这个弹出窗口 一切工作正常 但现在我需要将其设置为第一次单击时表单不提交 处理的位置 但是 在第一次单击后
  • 为插入语句生成uuid

    我想像这样生成uuide58ed763 928c 4155 bee9 fdbaaadc15f3当数据插入表中时 CREATE TABLE IF NOT EXISTS bin lists id uuid NOT NULL bin intege
  • 如何将 astro 组件渲染为 HTML 字符串?

    我希望能够在 Astro 中拥有一个动态页面来呈现 Astro 组件 我深入研究了文档和代码 但找不到像下面这样的函数 Astro render 理想情况下 我可以将属性传递给它 我正在寻找类似的东西react renderToString
  • Android 上有哪些角色可用?

    我想在我的 Android 应用程序中显示一些特殊的 Unicode 字符 这些字符未在 droidfonts com 上列出 但它们在模拟器和我的手机上正确显示 但想确定是否所有 Android 平台都支持它们 它记录在某处吗 谢谢 ED
  • 将 Flutter Row 的子级拉伸到最大*自然*高度

    override Widget build BuildContext context return Scaffold appBar AppBar title Text title body ListView children
  • Scrapy 不会抓取所有页面

    这是我的工作代码 from scrapy item import Item Field class Test2Item Item title Field from scrapy http import Request from scrapy
  • 如果 kNN 没有训练阶段,当我们将 .fit() 方法应用于 Scikit-learn 中的 kNN 模型时会发生什么?

    由于 kNN 在 RAM 级别处理训练和预测 并且不需要显式的训练过程 那么当拟合 knn 模型时到底会发生什么 我认为这一步与训练模型有关 谢谢 这是如果我跳过拟合步骤将会得到的错误 NotFittedError This KNeighb
  • 如何在 Spring 中管理对象池?

    据我了解 在 Spring 中 所有对象默认都被视为单例 如果 singleton 设置为 false 则每个请求都会提供一个新对象 但是如果我想池化对象怎么办 假设设置范围从最少 1 到最多 10 个实例 使用 Spring 可以吗 池化
  • 我的 AndroidManifest.xml 中声明的活动的 ActivityNotFoundException

    我有一个启动的 Android 应用程序 大部分时间都运行良好 然而 在大约 1000 多次运行中 有 1 次我收到 android content ActivityNotFoundException 无法找到显式活动类异常 该活动已在我的
  • 将所有“\n”替换为“,”

    我有一个文本区域 我想将其值中的 n 替换为 var valuetxtarr txtarr val var valuetxtarrs valuetxtarr replace n g alert valuetxtarrs 但它不起作用 为什么
  • 是否可以在 PYTHON 的一个命令中对多个字符串使用 .count ?

    我想知道是否可以使用 count 函数对多个字符串进行计数 string abcdefg string count or 当我使用 or 命令时 它只给出 1 个变量的计数 但我想要总数 如何将它组合起来 使其计入 2 个字符串 而不将其拆
  • 自定义 Lint 检查未运行

    我目前正在尝试编写我正在处理的自定义 lint 检查 我创建了一个单独的 java 项目并将其作为 jar 包含在内 我的问题是 无论如何 在分析我的代码库时 似乎我的自定义检查没有运行 我已经包含了一个注册表 class MyIssueR
  • 检测堆栈溢出

    操作系统如何检测用户空间程序的堆栈溢出 然后将 SIGTERM 或 SIGSEGV 发送到这些用户空间程序 防护页 当操作系统为程序创建堆栈时 它将分配比指定的多一点的空间 内存按页分配 通常每页 4KB 并且额外的页将进行设置 以便任何访
  • 从 CGImage 获取像素格式

    我非常了解位图布局和像素格式主题 但在处理通过加载的 png jpeg 图像时遇到问题NSImage 我无法弄清楚我得到的是预期行为还是错误 let nsImage NSImage NSImage byReferencingURL let
  • Pylint 无法与 OS X 上的 Emacs GUI 一起使用;从命令行工作

    从命令行运行时 emacs filename py flymake 和 pylint 完美配合 错误被正确突出显示 尽管我无法通过工具提示悬停来获取错误详细信息 因为它是文本模式 当从 GUI Carbon Emacs 运行时 Flymak