运行 python 带有 fabric 和 pipenv 的脚本
Running python script with fabric and pipenv
我的项目是建立在 python 3 上的,我想使用 Fabric 来自动化几个脚本。
我正在使用 pipenv 进行部门管理。但是我无法使用 python 3. 运行 Fabric 命令。
这是我的问题的简化脚本。
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$
系统中安装了哪个实用程序
而且我在 Pipfiles 中找不到任何关于 PATH 设置的信息
有什么想法吗?
更新
我能够通过这个丑陋的解决方法做到这一点:
@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 环境,以确保 PATH 正确。
我的项目是建立在 python 3 上的,我想使用 Fabric 来自动化几个脚本。 我正在使用 pipenv 进行部门管理。但是我无法使用 python 3. 运行 Fabric 命令。 这是我的问题的简化脚本。
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$
系统中安装了哪个实用程序
而且我在 Pipfiles 中找不到任何关于 PATH 设置的信息
有什么想法吗?
更新
我能够通过这个丑陋的解决方法做到这一点:
@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 环境,以确保 PATH 正确。