首页 > 解决方案 > Pylint 和 Fabric 上下文管理器

问题描述

我正在使用 python 脚本(位于 Windows)以在 linux 服务器中远程执行(另一个)脚本。我需要更改目录并保持执行脚本的状态,经过研究,我发现织物的帮助可以解决问题。但是它遇到了pylint错误:

E1129:Context manager 'generator' doesn't implement __enter__ and __exit__.and 

找到了一些对此问题的评论,例如此处的评论,但是我不明白这一点,不确定发生了什么以及如何解决。据我了解,fabric context manager cd 与“with”语句一起工作,许多示例看起来像我的代码,很少有人报告这种行为的解决方案,或者是我这个初学者不明白。我使用 VSCode 作为 IDE、python 3.7 和 fabric3。希望你能帮助我澄清发生了什么。谢谢!

这是我现在使用的代码:

from fabric.api import cd, run, task, run, env
from fabric.context_managers import cd

env.hosts = ['xxx@server.domain.com:22']
env.password = ['myp@ss']
DIR = 'elfar/elfar'

def go_to_script():
    with cd(DIR):
        run("ls")

标签: pythonfabricpylintcontextmanager

解决方案


我似乎这个问题已经存在很长时间了,它被称为"false positive not-context-manager error"。解决方案是通过禁用 not-context-manager pylint 检查来跳过警告。我按照以下步骤实现了它:

  1. 转到项目文件夹并创建一个 pylintrc 文件

    pylint --generate-rcfile > ~/.pylintrc
    
  2. 打开文件并找到以下行:

    # --disable=W".
    disable=
    
  3. 在列表末尾添加not-context-manager ,就像他们在此处所做的那样

推荐阅读