Диспетчер контекста Pylint и Fabric - PullRequest
0 голосов
/ 26 сентября 2018

Я работаю в скрипте Python (окна расположены), чтобы удаленно выполнить (другой) скрипт на сервере Linux.Мне нужно изменить каталог и сохранить состояние для выполнения сценария, и после исследования я обнаружил, что помощь фабрики может решить проблему.Однако он сталкивается с ошибкой Pylint:

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

Нашел некоторые комментарии к этой проблеме, такие как здесь , однако я не понимаю, не знаю, что происходит и как решить.Насколько я понял, 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")

1 Ответ

0 голосов
/ 26 сентября 2018

Мне кажется, что эта проблема существует очень давно, она называется "ложно-положительная ошибка не-менеджера контекста" .Решение - пропустить предупреждение, отключив проверку не-контекста-менеджера.Я добился этого, выполнив следующие действия:

  1. Перейдите в папку проекта и Создайте файл pylintrc

    pylint --generate-rcfile > ~/.pylintrc
    
  2. Откройте файл и найдите строки:

    # --disable=W".
    disable=
    
  3. Добавьте not-context-manager в конец списка, как они это сделали здесь
...