Ö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