使用fabric和pipenv运行python脚本

使用fabric和pipenv运行python脚本,python,fabric,pipenv,Python,Fabric,Pipenv,我的项目是基于Python3构建的,我想使用Fabric来自动化几个脚本。 我正在使用pipenv进行deps管理。但我无法使用Python3运行Fabric命令。 这是我的问题的简化脚本 从fabric.tasks导入任务 PIPENV='/home/viktor/.local/bin/PIPENV' 项目路径=“/home/viktor/dev/fabric” @任务 def测试1(c): c、 运行('python--version') @任务 def测试2(c): 使用c.cd(项目路径

我的项目是基于Python3构建的,我想使用Fabric来自动化几个脚本。 我正在使用pipenv进行deps管理。但我无法使用Python3运行Fabric命令。 这是我的问题的简化脚本

从fabric.tasks导入任务
PIPENV='/home/viktor/.local/bin/PIPENV'
项目路径=“/home/viktor/dev/fabric”
@任务
def测试1(c):
c、 运行('python--version')
@任务
def测试2(c):
使用c.cd(项目路径):
c、 运行(f'{PIPENV}运行python--版本')
示例:

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$ 
系统中安装了哪个实用程序

我在PIP文件中找不到任何有关路径设置的信息

有什么想法吗

更新

我能用这个丑陋的变通方法做到这一点:

@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

它可以工作,但是我想知道是否有更好的方法来完成它

我没有看到您指定要连接到的远程主机,但是无论该主机是什么,它都无法在远程路径中找到哪个。我会检查安装了pipenv的远程端的shell环境,以确保路径正确。

我看不到您指定要连接的远程主机,但无论该主机是什么,它都无法在远程路径中找到哪个。我会在安装了pipenv的远程端检查您的shell环境,以确保路径正确。

它是在本地执行的。在您的示例中,错误与结构无关,完全与连接“c”的远程端上的坏环境有关。这里没有结构问题,除非您提供更多信息或准确的文件/调用,否则您将无法获得更多的帮助。您是对的,我将本地执行与远程执行混合在一起,并且找错了地方。感谢您指出这一点。它是在本地执行的。在您的示例中,该错误与结构无关,完全与连接“c”的远程端的坏环境有关。这里没有结构问题,除非您提供更多信息或准确的文件/调用,否则您将无法获得更多的帮助。您是对的,我将本地执行与远程执行混合在一起,并且找错了地方。谢谢你指出这一点。