Python invoke (fabri c) манипуляция sys.path - PullRequest
2 голосов
/ 06 мая 2020

Я унаследовал код, который использует fabri c для запуска команд после изменения sys.path. Раньше это работало. Но теперь с fabri c 2.5 и python 3.7 я не могу понять, как я могу сохранить изменения в sys.path в задаче. У меня есть:

fabfile.py

import sys
from fabric import task

sys.path.insert(0, 'blah')
sys.path.append('blarg')
@task
def t(con):
    con.run('python3 tmp.py')

tmp.py

import sys
print(sys.path)

Ни blah, ни blarg не присутствуют при запуске fab t. Читая документацию, насколько я понимаю, это устаревшее поведение, но недавно доступные конфигурации, менеджеры контекста и оболочки не дают мне возможности изменить это, или, по крайней мере, это не сразу очевидно для меня. Есть ли способ добиться этого с помощью fabri c или мне нужно идти другим путем?

1 Ответ

1 голос
/ 06 мая 2020

Если вам на самом деле не нужно, чтобы один был добавлением, а другой - добавлением, вы можете сделать это с помощью env var :

@fabric.task
def t(con):
    con.run('python3 tmp.py', env={"PYTHONPATH": "blah:blarg"})

Они оба будут в этом случае добавляется.

...