Open Source Py Kodunuzu Exe Yapın


Merhabalar Ben Rhanta Bu Gün Sizlere
Yazmış Olduğum Py Kodunuzu Exe Yapma Kodunu Göstericem
Bunu Yaparkan Gptden Yardım Aldım.

Bu Kodu İstediğiniz Gibi Editleyip Paylaşabilirsiniz İznim vardır yani

Şimdi Bu Kodu Çalıştırmak için indirmeniz Kütüphaneler : pyQt5 , Pyinstaller Kurmanız Gerekiyor
Direkt Kurmak için Kod : Cmdye
pip install pyQt5 pyinstaller Yazmanız Yeterlidir

Zaten Kullanımı Basit Açıkladım Kodda Herşeyi
Fakat Alttaki Mavi Yazı Sığmadı Onada Açıklama Ekledim Anlayın Diye . İyi Kullanımlar

Python:
import subprocess
import sys
from PyQt5.QtWidgets import (
    QApplication, QWidget, QLabel, QPushButton, QLineEdit,
    QFileDialog, QVBoxLayout, QHBoxLayout, QCheckBox, QMessageBox, QProgressBar, QTextEdit
)
from PyQt5.QtCore import Qt

class AutoPyToExe(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle("CG Py to Exe")
        self.setFixedSize(600, 600)
        self.setStyleSheet("""
    QWidget {
        background-color: #2E2E2E;
        color: white;
        font-family: Arial;
        font-size: 14px;
    }
    QPushButton {
        background-color: #4CAF50;
        border: none;
        color: white;
        padding: 5px 8px;
        text-align: center;
        text-decoration: none;
        font-size: 10px;
        margin: 4px 2px;
        border-radius: 5px;
        min-width: 80px;
    }
    QPushButton:hover {
        background-color: #45a049;
    }
    QLineEdit {
        background-color: #3C3C3C;
        color: white;
        padding: 5px;
        border: 1px solid #555;
        border-radius: 3px;
        min-width: 450px;
        max-width: 600px;
    }
    QCheckBox {
        padding: 5px;
    }
    QLabel {
        padding: 5px;
    }
    QProgressBar {
        border: 2px solid grey;
        border-radius: 5px;
        text-align: center;
        font-size: 10px;
        min-height: 30px;
        padding: 0px;
    }
    QProgressBar::chunk {
        background-color: #05B8CC;
        width: 20px;
    }
    QTextEdit {
        background-color: #1E1E1E;
        color: #00FF00;
        padding: 5px;
        border: 1px solid #555;
        border-radius: 3px;
    }
""")





        main_layout = QVBoxLayout()

        title_label = QLabel("CG Py to EXE")
        title_label.setStyleSheet("font-size: 24px; font-weight: bold;")
        title_label.setAlignment(Qt.AlignCenter)
        main_layout.addWidget(title_label)

        py_file_label = QLabel("Python Dosyası Seç:")
        py_file_label.setToolTip("Dönüştürmek istediğiniz .py dosyasını seçin.")
        main_layout.addWidget(py_file_label)

        py_file_layout = QHBoxLayout()
        self.py_file_input = QLineEdit()
        self.py_file_input.setReadOnly(True)
        self.py_file_input.setToolTip("Seçilen Python dosyasının yolu.")
        py_file_layout.addWidget(self.py_file_input)

        self.browse_py_button = QPushButton("Gözat")
        self.browse_py_button.setToolTip("Python dosyasını seçmek için tıklayın.")
        self.browse_py_button.clicked.connect(self.browse_py_file)
        py_file_layout.addWidget(self.browse_py_button)
        main_layout.addLayout(py_file_layout)

        self.onefile_checkbox = QCheckBox("Tek Dosya")
        self.onefile_checkbox.setToolTip("Uygulamayı tek bir .exe dosyası olarak paketler.")
        self.onefile_checkbox.setChecked(True)
        main_layout.addWidget(self.onefile_checkbox)

        self.noconsole_checkbox = QCheckBox("Konsol Penceresini Açma")
        self.noconsole_checkbox.setToolTip("Uygulama çalışırken konsol penceresi açılmaz.")
        main_layout.addWidget(self.noconsole_checkbox)

        icon_label = QLabel("Simge Dosyası Seç (isteğe bağlı):")
        icon_label.setToolTip("EXE dosyasına eklemek istediğiniz .ico dosyasını seçin.")
        main_layout.addWidget(icon_label)

        icon_layout = QHBoxLayout()
        self.icon_input = QLineEdit()
        self.icon_input.setReadOnly(True)
        self.icon_input.setToolTip("Seçilen simge dosyasının yolu.")
        icon_layout.addWidget(self.icon_input)

        self.browse_icon_button = QPushButton("Gözat")
        self.browse_icon_button.setToolTip("Simge dosyasını seçmek için tıklayın.")
        self.browse_icon_button.clicked.connect(self.browse_icon_file)
        icon_layout.addWidget(self.browse_icon_button)
        main_layout.addLayout(icon_layout)

        output_label = QLabel("Çıktı Klasörü Seç:")
        output_label.setToolTip("Dönüştürülen .exe dosyasının kaydedileceği klasörü seçin.")
        main_layout.addWidget(output_label)

        output_layout = QHBoxLayout()
        self.output_input = QLineEdit()
        self.output_input.setReadOnly(True)
        self.output_input.setToolTip("Seçilen çıktı klasörünün yolu.")
        output_layout.addWidget(self.output_input)

        self.browse_output_button = QPushButton("Gözat")
        self.browse_output_button.setToolTip("Çıktı klasörünü seçmek için tıklayın.")
        self.browse_output_button.clicked.connect(self.browse_output_folder)
        output_layout.addWidget(self.browse_output_button)
        main_layout.addLayout(output_layout)

        additional_options_label = QLabel("Ek PyInstaller Seçenekleri (isteğe bağlı):")
        additional_options_label.setToolTip("PyInstaller'a eklemek istediğiniz seçenekleri buraya yazın.")
        main_layout.addWidget(additional_options_label)

        self.additional_options_input = QLineEdit()
        self.additional_options_input.setToolTip("Örneğin: --hidden-import=module_name")
        main_layout.addWidget(self.additional_options_input)

        output_name_label = QLabel("Çıktı Dosya Adı (isteğe bağlı):")
        output_name_label.setToolTip("Oluşturulacak .exe dosyasının adını belirtin.")
        main_layout.addWidget(output_name_label)

        self.output_name_input = QLineEdit()
        self.output_name_input.setToolTip("EXE dosyasının adı (uzantı olmadan).")
        main_layout.addWidget(self.output_name_input)

        self.convert_button = QPushButton("Dönüştür")
        self.convert_button.setStyleSheet("background-color: #2196F3; font-size: 16px; padding: 10px;")
        self.convert_button.setToolTip("Dönüştürme işlemini başlatmak için tıklayın.")
        self.convert_button.clicked.connect(self.convert_to_exe)
        main_layout.addWidget(self.convert_button)

        self.progress_bar = QProgressBar()
        self.progress_bar.setValue(0)
        self.progress_bar.setToolTip("Dönüştürme işleminin ilerleme durumunu gösterir.")
        main_layout.addWidget(self.progress_bar)

        log_label = QLabel("Dönüştürme Logları:")
        log_label.setToolTip("Dönüştürme işlemi sırasında oluşan logları gösterir.")
        main_layout.addWidget(log_label)

        self.log_output = QTextEdit()
        self.log_output.setReadOnly(True)
        self.log_output.setStyleSheet("background-color: #1E1E1E; color: #00FF00;")
        self.log_output.setToolTip("Dönüştürme işlemi sırasında oluşan loglar.")
        main_layout.addWidget(self.log_output)

        self.setLayout(main_layout)

    def browse_py_file(self):
        options = QFileDialog.Options()
        file_name, _ = QFileDialog.getOpenFileName(
            self,
            "Python Dosyası Seç",
            "",
            "Python Dosyaları (*.py);;Tüm Dosyalar (*)",
            options=options
        )
        if file_name:
            self.py_file_input.setText(file_name)

    def browse_icon_file(self):
        options = QFileDialog.Options()
        file_name, _ = QFileDialog.getOpenFileName(
            self,
            "Simge Dosyası Seç",
            "",
            "Icon Dosyaları (*.ico);;Tüm Dosyalar (*)",
            options=options
        )
        if file_name:
            self.icon_input.setText(file_name)

    def browse_output_folder(self):
        options = QFileDialog.Options()
        folder = QFileDialog.getExistingDirectory(
            self,
            "Çıktı Klasörü Seç",
            "",
            options=options
        )
        if folder:
            self.output_input.setText(folder)

    def convert_to_exe(self):
        py_file = self.py_file_input.text()
        output_folder = self.output_input.text()

        if not py_file:
            QMessageBox.warning(self, "Hata", "Lütfen bir Python dosyası seçin.")
            return

        if not output_folder:
            QMessageBox.warning(self, "Hata", "Lütfen bir çıktı klasörü seçin.")
            return

        onefile = "--onefile" if self.onefile_checkbox.isChecked() else ""
        noconsole = "--noconsole" if self.noconsole_checkbox.isChecked() else ""
        icon = f'--icon="{self.icon_input.text()}"' if self.icon_input.text() else ""
        additional_options = self.additional_options_input.text()
        output_name = f'--name="{self.output_name_input.text()}"' if self.output_name_input.text() else ""

        command = f'pyinstaller {onefile} {noconsole} {icon} {output_name} "{py_file}" --distpath "{output_folder}" {additional_options}'

        self.progress_bar.setValue(0)
        self.log_output.clear()
        self.log_output.append("Dönüştürme işlemi başlatılıyor...\n")

        try:
            process = subprocess.Popen(
                command,
                shell=True,
                stdout=subprocess.PIPE,
                stderr=subprocess.STDOUT,
                text=True
            )

            for line in process.stdout:
                self.log_output.append(line.strip())
                self.update_progress(line)

            process.wait()

            if process.returncode == 0:
                self.progress_bar.setValue(100)
                QMessageBox.information(self, "Başarılı", "Dönüştürme işlemi tamamlandı.")
            else:
                QMessageBox.critical(self, "Hata", "Dönüştürme işlemi sırasında bir hata oluştu.")
        except Exception as e:
            QMessageBox.critical(self, "Hata", f"Dönüştürme sırasında bir hata oluştu:\n{e}")
            self.progress_bar.setValue(0)

    def update_progress(self, log_line):
        if "Building" in log_line and "spec" in log_line:
            self.progress_bar.setValue(10)
        elif "running analysis" in log_line:
            self.progress_bar.setValue(30)
        elif "creating EXE" in log_line:
            self.progress_bar.setValue(60)
        elif "Building EXE" in log_line:
            self.progress_bar.setValue(80)
        elif "Done" in log_line:
            self.progress_bar.setValue(100)

def main():
    app = QApplication(sys.argv)
    window = AutoPyToExe()
    window.show()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()


Uygulamanın Guisi

güzel konu ancak daha basidi vardı mesela
pip install auto-py-to-exe
python auto-py-to-exe
 
Bu kullanıcıyla herhangi bir iş veya ticaret yapmak istiyorsanız, forumdan uzaklaştırıldığını sakın unutmayın.
güzel konu
 

Merhabalar Ben Rhanta Bu Gün Sizlere
Yazmış Olduğum Py Kodunuzu Exe Yapma Kodunu Göstericem
Bunu Yaparkan Gptden Yardım Aldım.

Bu Kodu İstediğiniz Gibi Editleyip Paylaşabilirsiniz İznim vardır yani

Şimdi Bu Kodu Çalıştırmak için indirmeniz Kütüphaneler : pyQt5 , Pyinstaller Kurmanız Gerekiyor
Direkt Kurmak için Kod : Cmdye
pip install pyQt5 pyinstaller Yazmanız Yeterlidir

Zaten Kullanımı Basit Açıkladım Kodda Herşeyi
Fakat Alttaki Mavi Yazı Sığmadı Onada Açıklama Ekledim Anlayın Diye . İyi Kullanımlar

Python:
import subprocess
import sys
from PyQt5.QtWidgets import (
    QApplication, QWidget, QLabel, QPushButton, QLineEdit,
    QFileDialog, QVBoxLayout, QHBoxLayout, QCheckBox, QMessageBox, QProgressBar, QTextEdit
)
from PyQt5.QtCore import Qt

class AutoPyToExe(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle("CG Py to Exe")
        self.setFixedSize(600, 600)
        self.setStyleSheet("""
    QWidget {
        background-color: #2E2E2E;
        color: white;
        font-family: Arial;
        font-size: 14px;
    }
    QPushButton {
        background-color: #4CAF50;
        border: none;
        color: white;
        padding: 5px 8px;
        text-align: center;
        text-decoration: none;
        font-size: 10px;
        margin: 4px 2px;
        border-radius: 5px;
        min-width: 80px;
    }
    QPushButton:hover {
        background-color: #45a049;
    }
    QLineEdit {
        background-color: #3C3C3C;
        color: white;
        padding: 5px;
        border: 1px solid #555;
        border-radius: 3px;
        min-width: 450px;
        max-width: 600px;
    }
    QCheckBox {
        padding: 5px;
    }
    QLabel {
        padding: 5px;
    }
    QProgressBar {
        border: 2px solid grey;
        border-radius: 5px;
        text-align: center;
        font-size: 10px;
        min-height: 30px;
        padding: 0px;
    }
    QProgressBar::chunk {
        background-color: #05B8CC;
        width: 20px;
    }
    QTextEdit {
        background-color: #1E1E1E;
        color: #00FF00;
        padding: 5px;
        border: 1px solid #555;
        border-radius: 3px;
    }
""")





        main_layout = QVBoxLayout()

        title_label = QLabel("CG Py to EXE")
        title_label.setStyleSheet("font-size: 24px; font-weight: bold;")
        title_label.setAlignment(Qt.AlignCenter)
        main_layout.addWidget(title_label)

        py_file_label = QLabel("Python Dosyası Seç:")
        py_file_label.setToolTip("Dönüştürmek istediğiniz .py dosyasını seçin.")
        main_layout.addWidget(py_file_label)

        py_file_layout = QHBoxLayout()
        self.py_file_input = QLineEdit()
        self.py_file_input.setReadOnly(True)
        self.py_file_input.setToolTip("Seçilen Python dosyasının yolu.")
        py_file_layout.addWidget(self.py_file_input)

        self.browse_py_button = QPushButton("Gözat")
        self.browse_py_button.setToolTip("Python dosyasını seçmek için tıklayın.")
        self.browse_py_button.clicked.connect(self.browse_py_file)
        py_file_layout.addWidget(self.browse_py_button)
        main_layout.addLayout(py_file_layout)

        self.onefile_checkbox = QCheckBox("Tek Dosya")
        self.onefile_checkbox.setToolTip("Uygulamayı tek bir .exe dosyası olarak paketler.")
        self.onefile_checkbox.setChecked(True)
        main_layout.addWidget(self.onefile_checkbox)

        self.noconsole_checkbox = QCheckBox("Konsol Penceresini Açma")
        self.noconsole_checkbox.setToolTip("Uygulama çalışırken konsol penceresi açılmaz.")
        main_layout.addWidget(self.noconsole_checkbox)

        icon_label = QLabel("Simge Dosyası Seç (isteğe bağlı):")
        icon_label.setToolTip("EXE dosyasına eklemek istediğiniz .ico dosyasını seçin.")
        main_layout.addWidget(icon_label)

        icon_layout = QHBoxLayout()
        self.icon_input = QLineEdit()
        self.icon_input.setReadOnly(True)
        self.icon_input.setToolTip("Seçilen simge dosyasının yolu.")
        icon_layout.addWidget(self.icon_input)

        self.browse_icon_button = QPushButton("Gözat")
        self.browse_icon_button.setToolTip("Simge dosyasını seçmek için tıklayın.")
        self.browse_icon_button.clicked.connect(self.browse_icon_file)
        icon_layout.addWidget(self.browse_icon_button)
        main_layout.addLayout(icon_layout)

        output_label = QLabel("Çıktı Klasörü Seç:")
        output_label.setToolTip("Dönüştürülen .exe dosyasının kaydedileceği klasörü seçin.")
        main_layout.addWidget(output_label)

        output_layout = QHBoxLayout()
        self.output_input = QLineEdit()
        self.output_input.setReadOnly(True)
        self.output_input.setToolTip("Seçilen çıktı klasörünün yolu.")
        output_layout.addWidget(self.output_input)

        self.browse_output_button = QPushButton("Gözat")
        self.browse_output_button.setToolTip("Çıktı klasörünü seçmek için tıklayın.")
        self.browse_output_button.clicked.connect(self.browse_output_folder)
        output_layout.addWidget(self.browse_output_button)
        main_layout.addLayout(output_layout)

        additional_options_label = QLabel("Ek PyInstaller Seçenekleri (isteğe bağlı):")
        additional_options_label.setToolTip("PyInstaller'a eklemek istediğiniz seçenekleri buraya yazın.")
        main_layout.addWidget(additional_options_label)

        self.additional_options_input = QLineEdit()
        self.additional_options_input.setToolTip("Örneğin: --hidden-import=module_name")
        main_layout.addWidget(self.additional_options_input)

        output_name_label = QLabel("Çıktı Dosya Adı (isteğe bağlı):")
        output_name_label.setToolTip("Oluşturulacak .exe dosyasının adını belirtin.")
        main_layout.addWidget(output_name_label)

        self.output_name_input = QLineEdit()
        self.output_name_input.setToolTip("EXE dosyasının adı (uzantı olmadan).")
        main_layout.addWidget(self.output_name_input)

        self.convert_button = QPushButton("Dönüştür")
        self.convert_button.setStyleSheet("background-color: #2196F3; font-size: 16px; padding: 10px;")
        self.convert_button.setToolTip("Dönüştürme işlemini başlatmak için tıklayın.")
        self.convert_button.clicked.connect(self.convert_to_exe)
        main_layout.addWidget(self.convert_button)

        self.progress_bar = QProgressBar()
        self.progress_bar.setValue(0)
        self.progress_bar.setToolTip("Dönüştürme işleminin ilerleme durumunu gösterir.")
        main_layout.addWidget(self.progress_bar)

        log_label = QLabel("Dönüştürme Logları:")
        log_label.setToolTip("Dönüştürme işlemi sırasında oluşan logları gösterir.")
        main_layout.addWidget(log_label)

        self.log_output = QTextEdit()
        self.log_output.setReadOnly(True)
        self.log_output.setStyleSheet("background-color: #1E1E1E; color: #00FF00;")
        self.log_output.setToolTip("Dönüştürme işlemi sırasında oluşan loglar.")
        main_layout.addWidget(self.log_output)

        self.setLayout(main_layout)

    def browse_py_file(self):
        options = QFileDialog.Options()
        file_name, _ = QFileDialog.getOpenFileName(
            self,
            "Python Dosyası Seç",
            "",
            "Python Dosyaları (*.py);;Tüm Dosyalar (*)",
            options=options
        )
        if file_name:
            self.py_file_input.setText(file_name)

    def browse_icon_file(self):
        options = QFileDialog.Options()
        file_name, _ = QFileDialog.getOpenFileName(
            self,
            "Simge Dosyası Seç",
            "",
            "Icon Dosyaları (*.ico);;Tüm Dosyalar (*)",
            options=options
        )
        if file_name:
            self.icon_input.setText(file_name)

    def browse_output_folder(self):
        options = QFileDialog.Options()
        folder = QFileDialog.getExistingDirectory(
            self,
            "Çıktı Klasörü Seç",
            "",
            options=options
        )
        if folder:
            self.output_input.setText(folder)

    def convert_to_exe(self):
        py_file = self.py_file_input.text()
        output_folder = self.output_input.text()

        if not py_file:
            QMessageBox.warning(self, "Hata", "Lütfen bir Python dosyası seçin.")
            return

        if not output_folder:
            QMessageBox.warning(self, "Hata", "Lütfen bir çıktı klasörü seçin.")
            return

        onefile = "--onefile" if self.onefile_checkbox.isChecked() else ""
        noconsole = "--noconsole" if self.noconsole_checkbox.isChecked() else ""
        icon = f'--icon="{self.icon_input.text()}"' if self.icon_input.text() else ""
        additional_options = self.additional_options_input.text()
        output_name = f'--name="{self.output_name_input.text()}"' if self.output_name_input.text() else ""

        command = f'pyinstaller {onefile} {noconsole} {icon} {output_name} "{py_file}" --distpath "{output_folder}" {additional_options}'

        self.progress_bar.setValue(0)
        self.log_output.clear()
        self.log_output.append("Dönüştürme işlemi başlatılıyor...\n")

        try:
            process = subprocess.Popen(
                command,
                shell=True,
                stdout=subprocess.PIPE,
                stderr=subprocess.STDOUT,
                text=True
            )

            for line in process.stdout:
                self.log_output.append(line.strip())
                self.update_progress(line)

            process.wait()

            if process.returncode == 0:
                self.progress_bar.setValue(100)
                QMessageBox.information(self, "Başarılı", "Dönüştürme işlemi tamamlandı.")
            else:
                QMessageBox.critical(self, "Hata", "Dönüştürme işlemi sırasında bir hata oluştu.")
        except Exception as e:
            QMessageBox.critical(self, "Hata", f"Dönüştürme sırasında bir hata oluştu:\n{e}")
            self.progress_bar.setValue(0)

    def update_progress(self, log_line):
        if "Building" in log_line and "spec" in log_line:
            self.progress_bar.setValue(10)
        elif "running analysis" in log_line:
            self.progress_bar.setValue(30)
        elif "creating EXE" in log_line:
            self.progress_bar.setValue(60)
        elif "Building EXE" in log_line:
            self.progress_bar.setValue(80)
        elif "Done" in log_line:
            self.progress_bar.setValue(100)

def main():
    app = QApplication(sys.argv)
    window = AutoPyToExe()
    window.show()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()


Uygulamanın Guisi

denilen birşey var hocam onla daha pratik olmazmı ?​

 

denilen birşey var hocam onla daha pratik olmazmı ?​

Daha Pratik Fakat Bu Projeyi Sıkıldığım için yaptım yani tamamen can sıkıntısını gidermek amacıyla
 
Daha Pratik Fakat Bu Projeyi Sıkıldığım için yaptım yani tamamen can sıkıntısını gidermek amacıyla
mantıklı olmus hocam ellerine sağlık benimde çok canım sıkılıyor şuan mesela arkada fake tool yapıyorum
p89dlft.png
 

  Şuanda konuyu görüntüleyen kullanıcılar


Üst Alt