Merhaba PyCharm kullanıyorum herahngi bir sorun yok ama auto-py-to-exe ile .exe olarak kaydettiğim zaman açağıdaki hatayı alıyorum sorunu çözemedim
Liste-Cek 2 dosyası çalışıyor…
[HATA] Dosya: Liste-Cek 2
Hata Mesajı: No module named ‘future’
import sys
import os
import time
import configparser
from PyQt5.QtWidgets import QApplication, QMainWindow, QTextEdit, QPushButton, QVBoxLayout, QWidget
from PyQt5.QtCore import QThread, pyqtSignal
from PyQt5.QtGui import QColor
# Türkçe karakter desteği için ConfigParser sınıfını özelleştirme
class TurkishConfigParser(configparser.ConfigParser):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
def optionxform(self, optionstr):
return optionstr # Değişiklik: Küçük harf dönüşümü yapma
class DosyaThread(QThread):
log_degisim_sinyali = pyqtSignal(str)
def __init__(self, dosya_yolu, dosya_adı, dosya_sure, parent=None):
super().__init__(parent)
self.dosya_yolu = dosya_yolu
self.dosya_adı = dosya_adı
self.dosya_sure = dosya_sure
self.calisiyor = False
def run(self):
self.calisiyor = True
self.log_degisim_sinyali.emit(f"{self.dosya_adı} dosyası çalışıyor...")
calisma_dizini = os.path.dirname(self.dosya_yolu)
os.chdir(calisma_dizini)
with open(self.dosya_yolu, "r", encoding="utf-8") as dosya:
kod = dosya.read()
try:
exec(kod)
except Exception as e:
self.log_degisim_sinyali.emit(f"[HATA] Dosya: {self.dosya_adı}\nHata Mesajı: {str(e)}\n")
if self.dosya_sure > 0:
self.log_degisim_sinyali.emit(f"{self.dosya_adı} dosyası {self.dosya_sure} saniye sonra kapatılacak.")
time.sleep(self.dosya_sure)
else:
self.log_degisim_sinyali.emit(f"{self.dosya_adı} dosyası kapatıldı.")
self.calisiyor = False
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Kontrol Paneli")
self.central_widget = QWidget()
self.setCentralWidget(self.central_widget)
self.layout = QVBoxLayout()
self.central_widget.setLayout(self.layout)
self.log_penceresi = QTextEdit()
self.layout.addWidget(self.log_penceresi)
self.baslat_durdur_butonu = QPushButton("Başlat")
self.baslat_durdur_butonu.clicked.connect(self.baslat_durdur_toggle)
self.layout.addWidget(self.baslat_durdur_butonu)
self.dosya_threads = []
# Bot ayarlarını okuma
self.bot_ayarlar_dosya = "bot-ayar.ini"
self.ayarlar = TurkishConfigParser()
self.ayarlar.read(self.bot_ayarlar_dosya, encoding="utf-8")
self.aktif_dosya_index = 0
self.is_baslatildi = False
self.baslat_renk = QColor(0, 255, 0) # Yeşil renk
self.durdur_renk = QColor(255, 0, 0) # Kırmızı renk
def baslat_durdur_toggle(self):
if not self.is_baslatildi:
self.baslat_durdur_butonu.setText("Durdur")
self.baslat_durdur_butonu.setStyleSheet(f"background-color: {self.durdur_renk.name()};")
self.is_baslatildi = True
self.baslat_dosya_threads()
else:
self.baslat_durdur_butonu.setText("Başlat")
self.baslat_durdur_butonu.setStyleSheet(f"background-color: {self.baslat_renk.name()};")
self.is_baslatildi = False
self.durdur_dosya_threads()
def baslat_dosya_threads(self):
bolum_numarasi = 1
self.dosya_threads = []
while True:
ayarlar_bolum = "ayarlar" + str(bolum_numarasi)
if ayarlar_bolum not in self.ayarlar:
break
dosya_yolu = self.ayarlar.get(ayarlar_bolum, "url-yol-" + str(bolum_numarasi), fallback=None)
dosya_adı = self.ayarlar.get(ayarlar_bolum, "url-ad-" + str(bolum_numarasi), fallback="")
dosya_sure = self.ayarlar.getint(ayarlar_bolum, "url-sure-" + str(bolum_numarasi), fallback=0)
if dosya_yolu:
dosya_thread = DosyaThread(dosya_yolu, dosya_adı, dosya_sure)
dosya_thread.log_degisim_sinyali.connect(self.loga_yazdir)
self.dosya_threads.append(dosya_thread)
bolum_numarasi += 1
if len(self.dosya_threads) > 0:
self.aktif_dosya_index = 0
self.calistir_siradaki_dosyayi()
def calistir_siradaki_dosyayi(self):
if self.aktif_dosya_index < len(self.dosya_threads):
dosya_thread = self.dosya_threads[self.aktif_dosya_index]
dosya_thread.start()
dosya_thread.finished.connect(self.dosya_thread_tamamlandi)
def dosya_thread_tamamlandi(self):
self.aktif_dosya_index += 1
if self.aktif_dosya_index == len(self.dosya_threads):
self.aktif_dosya_index = 0
if self.is_baslatildi:
self.calistir_siradaki_dosyayi()
def durdur_dosya_threads(self):
for dosya_thread in self.dosya_threads:
dosya_thread.terminate()
def loga_yazdir(self, mesaj):
self.log_penceresi.append(mesaj)
self.konsol_hatasi_kaydet(mesaj)
def konsol_hatasi_kaydet(self, hata_mesaji):
with open("log.txt", "a", encoding="utf-8") as dosya:
dosya.write(hata_mesaji + "\n")
def closeEvent(self, event):
self.durdur_dosya_threads()
super().closeEvent(event)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())