Запуск python скрипта с фабрикой c и pipenv - PullRequest
0 голосов
/ 27 марта 2020

Мой проект построен на 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

Это работает, но мне интересно, есть ли лучший способ сделать это

1 Ответ

0 голосов
/ 27 марта 2020

Я не вижу, чтобы вы указали удаленный хост, к которому вы подключаетесь, но каким бы ни был этот хост, он не может найти какой в ​​удаленном пути. Я бы проверил вашу оболочку на удаленной стороне, где вы установили pipenv, чтобы убедиться, что PATH правильный.

...