Son kullanma tarihi geçmiş, bayatlamış bir tarayıcı kullanıyorsanız, Mercedes kullanmak yerine tosbağaya binmek gibi... Web sitelerini düzgün görüntüleyemiyorsanız eh, bi' zahmet tarayıcınızı güncelleyiniz. Modern Web standartlarını karşılayan bir tarayıcı alternatifine göz atın.
Visual Studio Code ile yapılan pygame oyun nasıl dışarı EXE olarak aktarılır?
PyInstaller diye bir kütüphane var, daha önce pek çok kez kullandım. Eğer (basit ama) consoldan yazmak istemiyorsanız auto-py-to-exe diye bir kütüphane var, o da PyInstaller altyapısını kullanıyor ama GUI de içeriyor. Ama resimleri direkt exeye ekleyemiyorsunuz diye biliyorum. Kodda belirttiğiniz dizinde olmalı.
PyInstaller diye bir kütüphane var, daha önce pek çok kez kullandım. Eğer (basit ama) consoldan yazmak istemiyorsanız Auto-py-to-EXE diye bir kütüphane var, o da PyInstaller altyapısını kullanıyor ama GUI de içeriyor. Ama resimleri direkt EXE'ye ekleyemiyorsunuz diye biliyorum. Kodda belirttiğiniz dizinde olmalı.
PyInstaller'ın --onedir ayarı ile programınızı paketleyebilirsiniz.
Programınızın ana .exe dosyası ve gerekli kütüphaneleri bir klasörde toplar.
Resimlerinizi de buraya kopyalarsınız.
Tüm klasörü zipleyerek dağıtabilirsiniz.
--onefile olanı tavsiye etmem, çünkü; aslında yaptığı şey, herşeyi paketleyip, paketten çıkaran, kapsayıcı bir .exe yaratmak. Yani bu gerçek anlamıyla, makina koduna dönüştürülmüş bir .exe yapmıyor, bir paketleyici->paketten çıkarıcı hazırlıyor.
Bu yüzden, hız olarak, --onedir, --onefile'dan daha hızlı olabiliyor:
PyInstaller's bootloader is usually quite fast in one-dir mode, but it can be much slower in one-file mode, because it depacks everything into a temporary directory. On Windows, I/O is very slow, and then you have antiviruses that will want to double check all those DLL files.
PyInstaller'ın önyükleyicisi genellikle onedir modunda oldukça hızlıdır, ancak onefile modunda çok daha yavaş olabilir, çünkü her şeyi geçici bir dizine paketler. Windows'ta I/O yavaştır ve daha sonra tüm bu DLL dosyalarını iki kez kontrol etmek isteyecek antivirüsleriniz olur.
Merhaba, basit bir Python projesi yaptım ama şöyle bir sorunum var. Logonun olduğu resimde programı py uzantılı olarak açıyorum, logo olmayanda ise EXE yapıp öyle açıyorum. Neden EXE yaptığımda py uzantılı olan gibi olmuyor? pyinstaller --onefile --noconsole program.py Bu kod ile EXE yapıyorum.
PyInstaller'ın --onedir ayarı ile programınızı paketleyebilirsiniz.
Programınızın ana .exe dosyası ve gerekli kütüphaneleri bir klasörde toplar.
Resimlerinizi de buraya kopyalarsınız.
Tüm klasörü zipleyerek dağıtabilirsiniz.
--onefile olanı tavsiye etmem, çünkü; aslında yaptığı şey, her şeyi paketleyip, paketten çıkaran, kapsayıcı bir .exe yaratmak. Yani bu gerçek anlamıyla, makine koduna dönüştürülmüş bir .exe yapmıyor, bir paketleyici->paketten çıkarıcı hazırlıyor.
Bu yüzden, hız olarak, --onedir, --onefile'dan daha hızlı olabiliyor:
Sorunu görmek için mini bir proje yarattım (ChatGPT yardımıyla), sonra da onu çalışır hale getirdim.
Görünüşe göre, --add-data parametresini eklemek gerekiyor.
Ayrıca, en önemlisi, Python script haliyle, paketlenmiş haldeki script'in path'i aynı değil. Sorun da bu yüzden çıkıyor. Aşağıda bir print() satırı ekledim, doğru path'i gösteriyor.
Belki sizde çok daha fazla resim vardır, daha genel bir şekilde ele almak gerekir, ama, bu kod sorunu gösteren ve path farkını ortaya koymak amacıyla var.
Dosyalarımız şu şekilde:
Kod:
alien.png
pack.sh
simple_game.py
Resimi kullanan kod:
Python:
import pygame
import sys
import os
pygame.init()
WIDTH, HEIGHT = 800, 600
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Simple Pygame - Load Image")
if getattr(sys, 'frozen', False):
# eğer paketlenmiş ise
print('sys._MEIPASS', sys._MEIPASS)
image_path = os.path.join(sys._MEIPASS, 'alien.png')
else:
# paketlenmeden açık çalışıyorsa
image_path = 'alien.png'
try:
alien_image = pygame.image.load(image_path)
alien_rect = alien_image.get_rect()
alien_rect.topleft = (100, 100)
except pygame.error as e:
print(f"Error loading image: {e}")
sys.exit()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill((255, 255, 255))
screen.blit(alien_image, alien_rect)
pygame.display.flip()
pygame.time.Clock().tick(60)
pygame.quit()
sys.exit()
paketleyici (Linux shell script formatında, ama pyinstaller komutu Windows'da da aynı olmalı):
Sorunu görmek için mini bir proje yarattım (ChatGPT yardımıyla), sonra da onu çalışır hale getirdim.
Görünüşe göre, --add-data parametresini eklemek gerekiyor.
Ayrıca, en önemlisi, Python script haliyle, paketlenmiş haldeki Script'in Path'i aynı değil. Sorun da bu yüzden çıkıyor. Aşağıda bir print() satırı ekledim, doğru Path'i gösteriyor.
Belki sizde çok daha fazla resim vardır, daha genel bir şekilde ele almak gerekir, ama, bu kod sorunu gösteren ve path farkını ortaya koymak amacıyla var.
Dosyalarımız şu şekilde:
Kod:
alien.png
pack.sh
simple_game.py
Resimi kullanan kod:
Python:
import pygame.
import sys.
import os.
pygame.init()
WIDTH, HEIGHT = 800, 600.
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Simple Pygame - Load Image")
if getattr(sys, 'frozen', False):
# eğer paketlenmiş ise.
print('sys._MEIPASS', sys._MEIPASS)
image_path = os.path.join(sys._MEIPASS, 'alien.png')
else:
# paketlenmeden açık çalışıyorsa.
image_path = 'alien.png'
try:
alien_image = pygame.image.load(image_path)
alien_rect = alien_image.get_rect()
alien_rect.topleft = (100, 100)
except pygame.error as e:
print(f"Error loading image: {e}")
sys.exit()
running = True.
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False.
screen.fill((255, 255, 255))
screen.blit(alien_image, alien_rect)
pygame.display.flip()
pygame.time.Clock().tick(60)
pygame.quit()
sys.exit()
Paketleyici (Linux Shell script formatında, ama PyInstaller komutu Windows'ta da aynı olmalı):
Hocam ZIP halinde yapsam? Çünkü ChatGPT'de EXE'yi bende sordum yapımı uzun sürüyor direkt bence ZIP halinde yapsam daha kısa olur. Sizce öyle nasıl yapabilirim?