python - 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")
解决方案
我似乎这个问题已经存在很长时间了,它被称为"false positive not-context-manager error"。解决方案是通过禁用 not-context-manager pylint 检查来跳过警告。我按照以下步骤实现了它:
转到项目文件夹并创建一个 pylintrc 文件
pylint --generate-rcfile > ~/.pylintrc
打开文件并找到以下行:
# --disable=W". disable=
- 在列表末尾添加not-context-manager ,就像他们在此处所做的那样
推荐阅读
- bash - Bash 用逗号分隔值,然后在变量中用引号括起来
- google-app-engine - 可以从 Google App Engine 中的 F4 自动缩放到像 F2 这样的小实例吗?
- flutter - 颤动中的可滚动标签
- sql - 将 XMLTYPE 分块为 CLOB 时 XML 标记在中间中断
- javascript - 按类型和值获取对象数组的可能组合
- sql - SQL Server 2016:在更新记录时分组
- deployment - 应用设置中带有 KeyVault 引用的 Azure Web 应用
- macos - 如何在vim中删除命令行下方多余的空白行?
- angular - 如何以角度更新类变量中的数据
- c# - 如何使用 C# 将自定义属性添加到 Excel 文档?