Мой проект построен на python 3, и я хочу использовать Fabri c для автоматизации нескольких скриптов. Я использую pipenv для управления отделами. Но мне не удается запустить команду Fabri c, используя python 3. Вот упрощенный скрипт с моей проблемой.
from fabric.tasks import task
PIPENV = '/home/viktor/.local/bin/pipenv'
PROJECT_PATH = '/home/viktor/dev/fabric'
@task
def test1(c):
c.run('python --version')
@task
def test2(c):
with c.cd(PROJECT_PATH):
c.run(f'{PIPENV} run python --version')
Примеры:
viktor@pro:~/dev/fabric$ pipenv run python --version
Python 3.7.5
viktor@pro:~/dev/fabric$ pipenv run fab test1
Python 2.7.17
viktor@pro:~/dev/fabric$ pipenv run fab test2
Warning: the which -a system utility is required for Pipenv to find Python installations properly.
Please install it.
Error: the command python could not be found within PATH or Pipfile's [scripts].
viktor@pro:~/dev/fabric$
какая утилита установлена в системе
И я не смог найти никакой информации о настройках PATH в Pipfiles
Есть идеи?
ОБНОВЛЕНИЕ
Я смог сделать это с помощью этого уродливого обходного пути:
@task
def test3(c):
c.run(f'source $({PIPENV} --venv)/bin/activate && python --version')
>> viktor@pro:~/dev/fabric$ pipenv run fab test3
>> Python 3.7.5
Это работает, но мне интересно, есть ли лучший способ сделать это