簡體   English   中英

python 腳本檢查和安裝包

[英]python script to check and install packages

我正在嘗試編寫 python 腳本來檢查和安裝 linux 中的軟件包。 我有兩個問題:

首先,我嘗試編寫以下代碼來檢查包,但沒有工作。 我缺少的是如何將打印轉換為終端到我可以檢測到的變量。 請找到代碼。

試驗#1

import apt
import os

x = os.system('apt-cache policy python3.6-dev')
if x>0:
    print('installed')
else:
    print('not installed')

試驗#2

import os 

os.system('dpkg-query -l | grep python3.6-dev | wc -l')
x = os.system('echo $?')
if x>0:
    print('installed')
else:
    print('not installed')

其次,我嘗試編寫一個 python 腳本來安裝。 但是,對於 linux,我們總是使用 sudo。 我過去寫過這段代碼,它使用 gksudo。 它可以工作,但現在無法正常工作,因為他們刪除了 gksudu。 如何修改此代碼以及我還可以使用什么來代替 gksudo

文件 #1(調用 RAM.py 文件)

import os
os.system('gksudo python RAM.py')

文件 #2(RAM 文件)

import os

# install
os.system('sudo apt-get install python3.6-dev')

首先,我建議您使用subprocess模塊而不是os 為了執行 shell 命令並捕獲返回碼、stdout 和 stderr,您可以嘗試:

from subprocess import run, PIPE
res = run('apt-cache policy python3.6-dev', shell=True, stdout=PIPE, stderr=PIPE, check=True)
print(res.returncode, res.stdout, res.stderr)

其中check (可選)是在執行失敗時引發異常(returncode>0)。

為了使用 sudo 運行命令,我建議如下:

password = "my_password"
base_command = "ls -l" # replace it with your command
command_with_sudo = f"echo {password} | sudo -S {base_command}"
res = run(command_with_sudo, shell=True, check=True, stdout=PIPE, stderr=PIPE)

請注意,將密碼作為純文本存儲在代碼中是非常不安全的,因此請盡量避免使用它(您可以將其作為腳本的參數提供/將其存儲在您的環境中/以某種方式對其進行加密 - 只是不要將其保留為在您的代碼中)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM