Pylint和Fabric上下文管理器

时间:2018-09-26 02:16:42

标签: python fabric pylint contextmanager

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

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

找到了有关该问题的一些评论,例如here,但是我不明白这一点,不确定发生了什么以及如何解决。据我了解结构上下文管理器cd与"with" statement一起工作时,许多示例看起来像我的代码,很少有人报告解决此问题的方法,或者是我不了解新手。我正在使用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")

1 个答案:

答案 0 :(得分:0)

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

  1. 转到项目文件夹,然后Create a pylintrc file

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

    # --disable=W".
    disable=
    
  3. 在列表末尾添加非上下文管理器here