Merhaba arkadaşlar,
Harici dosyalar içeren GUI’li Python dosyalarını PyInstaller ile exe dosyasına çevirmeyi öğrendim ancak tek bir exe dosyasına çeviremedim henüz. Konuyu stackoverflow sitesinde araştırdım ve
birden çok başlık buldum. Mesela aşağıda linki verilmiş olan başlıkta birkaç çözüm yöntemi öneriliyor ancak denemelerim başarısızlıkla sonuçlandı.
İlgili sayfa şu:
İzlediğim yöntemi ilgili başlığa yazdım ancak henüz cevap gelmedi. Belki çözüm yolunu siz biliyorsunuzdur. Yanlış yaptığım veya atladığım bir adım varsa yardımcı olursanız sevinirim.
İzlediğim yöntem aşağıdaki gibiydi:
Adım 1: Stackoverflow’da önerilen yöntemlerden her birini Py uzantılı dosyanın içine os ve sys modüllerini içe aktararak yazdım, aşağıdaki fonksiyonu ikon yolunun parametresini vererek çağırdım: Son yazdığım kod aşağıdaki gibidir:
def resource_path(relative_path):
""" Get absolute path to resource, works for dev and for PyInstaller """
base_path = getattr(sys, '_MEIPASS', os.path.dirname(os.path.abspath(__file__)))
return os.path.join(base_path, relative_path)
Adım 2: Python dosyasının bulunduğu dizinde konsol ekranını açıp ekrana pyi-makespec dosya_ismi.py yazarak ilgili Python dosyasının .spec uzantılı dosyasını oluşturdum.
Adım 3: spec dosyasını Notepad++ yardımıyla açtım. Aşağıdaki gibi kodlar barınıyor bu dosyanın içinde, eklediğim kısımlardan önce yorum satırları var:
# -*- mode: python -*-
block_cipher = None
a = Analysis(['C:\\Users\\TCK\\Desktop\\Projeler\\Converter-GUI.py'],
pathex=['C:\\Users\\TCK\\Desktop\\Projeler'],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher)
#Exe dosyasına eklemek istediğimiz harici dosyayı aşağıdaki satırdaki gibi ekledim.
a.datas += [('Converter-GUI.ico', 'C:\\Users\\TCK\\Desktop\\Projeler\\Converter-GUI.ico', 'DATA')]
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
exclude_binaries=True,
name='Converter-GUI',
debug=False,
strip=False,
upx=True,
#Konsolun değerine False verirsek konsol iptal ediliyor.
console=False,
#Eklemek istediğimiz ikonu da bu şekilde yazıyoruz.
icon='C:\\Users\\TCK\\Desktop\\Projeler\\Converter-GUI.ico')
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=True,
name='Converter-GUI')
Adım 4: Yukarıda gösterilen değişiklikleri yaptıktan sonra spec dosyasını kaydettim. Sonra konsolu yine Python dosyasının bulunduğu dizinde açtım ve ekrana bu sefer pyinstaller C:\Users\TCK\Desktop\Projeler\Converter-GUI.spec yazdım. Exe dosyasını oluşturdu ancak dist klasörünün içinde halen çok sayıda dosya var.
Daha sonra pyinstaller --onefile C:\Users\TCK\Desktop\Projeler\Converter-GUI.spec şeklinde yapmayı denedim, sonuç yine istediğim gibi olmadı. Acaba bu konuda yardımcı olabilecek arkadaşlar var mı?