Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python脚本在Ubuntu中安装Git_Python_Git_Ubuntu_Subprocess - Fatal编程技术网

使用Python脚本在Ubuntu中安装Git

使用Python脚本在Ubuntu中安装Git,python,git,ubuntu,subprocess,Python,Git,Ubuntu,Subprocess,我正试图写一个脚本来检查Ubuntu中的必备软件,如果没有安装,就继续安装它 我是Python的新手,我知道Python的子流程模块可以用来实现这一目标 我已经写了下面的示例代码,但不确定为什么失败 import subprocess c = subprocess.Popen(['sudo','apt-get','install','git'], stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.STDOUT) gr

我正试图写一个脚本来检查Ubuntu中的必备软件,如果没有安装,就继续安装它

我是Python的新手,我知道Python的
子流程
模块可以用来实现这一目标

我已经写了下面的示例代码,但不确定为什么失败

import subprocess
c = subprocess.Popen(['sudo','apt-get','install','git'], stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.STDOUT)
grep_stdout = c.communicate(input='root')[0]
print(grep_stdout)
当我运行这个程序时,我得到以下错误

sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: 3 incorrect password attempts
我是不是遗漏了什么


有大量的先决条件。我只是想问问 用户安装所有这些软件将是一件令人头疼的事。那就 考虑编写一个函数来测试软件,如果 未安装的东西将继续为他安装

有几种方法可以做到这一点:

  • 检查软件是否存在,如果没有,退出程序时会显示一条消息,列出要安装的缺失组件

  • 自述文件或文档中提供需要安装的软件列表

  • 创建一个列表,列出所需的依赖项;并让用户使用自己喜欢的方法安装

  • 如果您的程序必须安装软件本身(它真的必须安装吗?),则指示用户以提升的权限运行您的脚本。在您的文档中,要求他们以
    根目录运行它

    顺便说一下,
    sudo
    可能不会安装在所有系统上


    有大量的先决条件。我只是想问问 用户安装所有这些软件将是一件令人头疼的事。那就 考虑编写一个函数来测试软件,如果 未安装的东西将继续为他安装

    有几种方法可以做到这一点:

  • 检查软件是否存在,如果没有,退出程序时会显示一条消息,列出要安装的缺失组件

  • 自述文件或文档中提供需要安装的软件列表

  • 创建一个列表,列出所需的依赖项;并让用户使用自己喜欢的方法安装

  • 如果您的程序必须安装软件本身(它真的必须安装吗?),则指示用户以提升的权限运行您的脚本。在您的文档中,要求他们以
    根目录运行它

    顺便说一下,
    sudo
    可能不会安装在所有系统上。

    导入子流程
    c=subprocess.Popen(['sudo','yum','install','git','-y'],
    stdout=subprocess.PIPE,stdin=subprocess.PIPE,stderr=subprocess.stdout)
    grep_stdout=c.communicate(input='root')[0]
    打印(grep_stdout)
    
    导入子流程
    c=subprocess.Popen(['sudo','yum','install','git','-y'],
    stdout=subprocess.PIPE,stdin=subprocess.PIPE,stderr=subprocess.stdout)
    grep_stdout=c.communicate(input='root')[0]
    打印(grep_stdout)
    
    为什么要用Python编写此脚本?Ubuntu的软件包管理工作得很好。如果你的程序依赖于Git,我建议在Git不存在的情况下让它优雅地失败,让用户按照自己的意愿安装/编译Git。有大量的先决条件。我只是觉得要求用户安装所有这些软件会让人头疼。因此,只要考虑编写一个函数来测试软件,如果没有安装某些东西,就会继续为他安装一个合理的思考过程@Burhan的答案非常好,涵盖了所有的主要选项。为什么要用Python编写这个脚本?Ubuntu的软件包管理工作得很好。如果你的程序依赖于Git,我建议在Git不存在的情况下让它优雅地失败,让用户按照自己的意愿安装/编译Git。有大量的先决条件。我只是觉得要求用户安装所有这些软件会让人头疼。因此,只要考虑编写一个函数来测试软件,如果没有安装某些东西,就会继续为他安装一个合理的思考过程@Burhan的回答太棒了,并涵盖了您的所有主要选项。在centos或RHEL上安装git时请使用python。如果您正在键入代码,请按Ctrl+K对其进行编码。并解释您的答案,以便其他人能够理解。在centos或RHEL上安装git时请使用python。如果您正在键入代码,请按Ctrl+K对其进行编码。并解释您的答案其他人都能理解。