Я хочу установить следующие пакеты в рамках своего сценария 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
Я написал следующий код, но он не работает. Как я могу решить эту проблему?
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)))
У Вас есть несколько проблем там:
self
в for items in packages:
self.packages
, строка, когда Вы звоните for item self.packages
, она выполняет итерации по каждому символу той строки. Необходимо было объявить пакеты как список с начала или добавить .split()
в конце. self.packages
длинно, не соответствует стандарту PEP8 79 символов на строку. Зафиксированный:
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)))