Instalando pacotes do ubuntu dentro do script python

0

Eu quero instalar os seguintes pacotes no meu script python:

python-pip python-sqlalchemy mongodb python-bson python-dpkt python-jinja2 
python-magic python-gridfs python-libvirt python-bottle python-pefile
python-chardet git build-essential autoconf automake libtool dh-autoreconf 
libcurl4-gnutls-dev libmagic-dev python-dev tcpdump libcap2-bin virtualbox 
dkms python-pyrex

Eu escrevi o seguinte código, mas não está funcionando. Como posso resolver este problema?

    self.command = "apt install"
    self.packages = "python-pip python-sqlalchemy mongodb python-bson python-dpkt python-jinja2 python-magic python-gridfs python-libvirt python-bottle python-pefile python-chardet git build-essential autoconf automake libtool dh-autoreconf libcurl4-gnutls-dev libmagic-dev python-dev tcpdump libcap2-bin virtualbox dkms python-pyrex"

    print("[+] Installation of the ubuntu packages is starting:")
    for items in packages:
        subprocess.run(str(command.split()) + str(items), stdout=DEVNULL, stderr=DEVNULL)
        print("\[+] Package {} Installed".format(str(self.items)))
    
por Milad 24.07.2016 / 19:17

2 respostas

0

Você tem vários problemas:

  • Você está com falta de self in for items in packages:
  • self.packages é uma string, quando você chama for item self.packages it itera sobre cada caractere dessa string. Você deve ter declarado pacotes como lista desde o início ou adicionado .split() no final.
  • seu self.packages é longo, não está em conformidade com o padrão PEP8 de 79 caracteres por linha.
por Sergiy Kolodyazhnyy 25.07.2016 / 00:22
0

Corrigido:

def package_installation(self):
    self.apt = "apt "
    self.ins = "install "
    self.packages = "python-pip python-sqlalchemy mongodb python-bson python-dpkt python-jinja2 python-magic python-gridfs python-libvirt python-bottle python-pefile python-chardet git build-essential autoconf automake libtool dh-autoreconf libcurl4-gnutls-dev libmagic-dev python-dev tcpdump libcap2-bin virtualbox dkms python-pyrex"

    self.color.print_green("[+] Installation of the ubuntu packages is starting:")

    for self.items in self.packages.split():
        self.command = str(self.apt) + str(self.ins) + str(self.items)

        subprocess.run(self.command.split())
        self.color.print_blue("\t[+] Package [{}] Installed".format(str(self.items)))
    
por Milad 24.07.2016 / 20:08