Öncelikle iyi forumlar.
Yazdığım basit bir program
os.system("pip3 install örnek")
kısmını yazıyor ve terminalde açıyor ama örnek kısmına kütüphane olmayan bir değer girildiğinde yükselen hatayı nasıl yakalayabilirim ?
Öncelikle iyi forumlar.
Yazdığım basit bir program
os.system("pip3 install örnek")
kısmını yazıyor ve terminalde açıyor ama örnek kısmına kütüphane olmayan bir değer girildiğinde yükselen hatayı nasıl yakalayabilirim ?
from subprocess import Popen, PIPE
process = Popen(["pip3", "install", "örnek"], stdout=PIPE, stderr=PIPE)
stdout, stderr = process.communicate()
print(stderr.decode("utf-8"))
Bunu kullanarak terminalin verdiği hatayı yakalayabilirsiniz.
Pip’in verdiği çıktıyı işlemek yerine modülü import etmeye çalışmanız daha pratik olabilir:
import subprocess
def install_library(lib):
subprocess.call("pip install " + lib, shell = True)
try:
__import__(lib)
except ModuleNotFoundError:
return False
else:
return True
if install_library("numpy"):
print("Başarıyla indirildi.")
else:
print("İndirme işlemi tamamlanamadı.")
Modülün içe aktarılmasından kaçınmak isteniyorsa şöyle bir şey de kullanılabilir:
import subprocess
import importlib
def install_library(lib):
if importlib.util.find_spec(lib) is not None:
return True
subprocess.call("pip install " + lib, shell = True)
return importlib.util.find_spec(lib) is not None
if install_library("numpy"):
print("Başarıyla indirildi.")
else:
print("İndirme işlemi tamamlanamadı.")
Kodun tamamı ile uyum sağlarmı
import tkinter as tk
import os
import sys
def indir():
data1 = değer1.get()
data2 = değer2.get()
os.system("pip{} install {}".format(data2 , data1))
pencere = tk.Tk()
pencere.geometry("350x300")
pencere.title("Paket Yükleyici v0.1")
pencere.resizable(False,False)
değer1 = tk.Entry(font="Verdana 13",fg="AQUA")
değer1.place(x=20,y=20)
değer2 = tk.Entry(font="Verdana 13",fg="RED")
değer2.place(x=20,y=60)
değer2.insert(0,"Python 3")
buton1 = tk.Button(text="İndir",fg="GREEN",font="Verdana 15",command=indir)
buton1.place(x=20,y=100)
buton2 = tk.Button(text="İptal Et",fg="RED",font="Verdana 15",command=sys.exit)
buton2.place(x=20,y=150)
lamel1 = tk.Label(text="Kütüphane Adı",fg="RED")
lamel1.place(x=250,y=25)
lamel2 = tk.Label(text="Python sürümü",fg="GREEN")
lamel2.place(x=250,y=65)
pencere.mainloop()
Attığım örnekler fonksiyon halinde zaten, uyum sağlaması için hangi şartları karşılaması lazım?
try ve except gibi olması lazım
Tam olarak bunun gibi
Fonksiyon kütüphane yüklendiyse veya zaten yüklü ise True, aksi takdirde False döndürüyor. Buna göre istediğiniz şekilde kullanabilirsiniz.
koşullu durumların fonksiyon hali diyebilirz o zaman
Açıklarmısınız bu kısımlar ne işe yarıyor