我正在使用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")
答案 0 :(得分:0)
我似乎这个问题已经存在很长时间了,它被称为"false positive not-context-manager error"。解决方案是通过禁用not-context-manager pylint检查来跳过警告。我是按照以下步骤实现的:
转到项目文件夹,然后Create a pylintrc file
pylint --generate-rcfile > ~/.pylintrc
打开文件并找到以下行:
# --disable=W".
disable=