我正在使用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")

最佳答案

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


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

pylint --generate-rcfile > ~/.pylintrc

打开文件并找到以下行:

# --disable=W".
disable=

在列表的末尾添加not-context-manager,就像他们做的一样here

09-20 13:45