【问题标题】:Pylint and Fabric context managerPylint 和 Fabric 上下文管理器
【发布时间】:2018-09-26 02:16:42
【问题描述】:

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

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

找到了一些解决这个问题的方法,比如here,但是我不明白这一点,不知道发生了什么以及如何解决。据我了解,fabric context manager 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")

【问题讨论】:

  • 可能是Pylint的错,你可以忽略它。
  • 那么需要去掉错误吗? pylint 不允许我看到任何结果。
  • 您正在导入一个cd 对象两次。
  • 感谢您的通知!,正如@iBug 提到的,这是 Pylint 的问题。

标签: python fabric pylint contextmanager


【解决方案1】:

这个问题好像很久了,叫"false positive not-context-manager error"。解决方案是通过禁用 not-context-manager pylint 检查来跳过警告。我按照以下步骤实现了它:

  1. 转到项目文件夹和Create a pylintrc file

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-06
    • 1970-01-01
    • 2016-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多