Şimdi Ara

Pyinstaller exe çevirme problemi

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
14
Cevap
0
Favori
1.802
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Herkese merhaba sanırım bir python dosyasını exe haline getirmenin en kolay yolu pyinstaller kullanmak.Ben de bunu kullanrak pygame,random,time modüllerinin olduğu dosyamı exe'ye çevirdim.Bir sorunla karşılaştım.Program açılıyor ancak işlemiyor.Pygame yükleniyor fakat diğer modüllerin yüklenip yüklenmediğinden emin değilim.Bana bu konuda yardımcı olabilirseniz detaylandırmak isterim.



  • 3 sene evvel orta büyüklükte (500 satır) Python skriptini py2exe modülü ile exe ye cevirdik ve bir hosting firmasının windows sunucusunda exe sorunsuz çalıştı.
  • pyinstaller'da yazdığınız kodu exe'ye çevirirken kodunuzu kısaca bir gözden geçirin, eğer import ettiğiniz ama o kullanmadığınız bir kütüphane varsa silin. yakalanamayan hatalardan biri bu oluyor genellikle.
  • gel pc pc kullanıcısına yanıt
    hocam kullandığım kütüphaneler pygame,random ve time kütüphaneleri.Bunlar için ek bir işlem yapmam gerekli midir?
  • quote:

    Orijinalden alıntı: aligolge

    hocam kullandığım kütüphaneler pygame,random ve time kütüphaneleri.Bunlar için ek bir işlem yapmam gerekli midir?
    import edip kod satırlarında kullanmışsanız sorun olmaz ama mesela from pygame import * yapmışsanız dediğim olabilir. onun yerine "from pygame import (sadece kullandığınız class'lar) olarak bi düzenleyin isterseniz. ben arayüz tasarlarken from pyqt5 import * yaptığımda olmuştu böyle bir şey. düzeltip "from pyqt5 import QtWidgets,QtApplication" vs vs sadece kullandıklarımı eklemiştim.

    onun dışında pygame hakkında çok bilgim olmadığı için yardım edemeyecem maalesef. ama yukarı da dediklerimi tam anlayamadıysanız kodları gönderin sizin yerine düzenlemeler yaparım çok uzun değilse.
  • quote:

    Orijinalden alıntı: gel pc pc

    import edip kod satırlarında kullanmışsanız sorun olmaz ama mesela from pygame import * yapmışsanız dediğim olabilir. onun yerine "from pygame import (sadece kullandığınız class'lar) olarak bi düzenleyin isterseniz. ben arayüz tasarlarken from pyqt5 import * yaptığımda olmuştu böyle bir şey. düzeltip "from pyqt5 import QtWidgets,QtApplication" vs vs sadece kullandıklarımı eklemiştim.

    onun dışında pygame hakkında çok bilgim olmadığı için yardım edemeyecem maalesef. ama yukarı da dediklerimi tam anlayamadıysanız kodları gönderin sizin yerine düzenlemeler yaparım çok uzun değilse.

    Alıntıları Göster
    dediğinizi şimdi anladım deneyeceğim, alakanız için de teşekkür ederim.




  • gel pc pc kullanıcısına yanıt
    hocam pm gönderim, geldi mi bilmiyorum ama aynı problem devam etti.Satırlar şu şekilde:

    from pygame import draw,init,display,font,event, quit
    from random import randint, random,randrange
    from pygame.locals import KEYDOWN, QUIT
    from time import sleep
    init()
    pencerem=display.set_mode((800,600))
    WHITE=(255,255,255)
    BLACK=(0,0,0)
    GRAY=(200,200,200)
    RED=(255,0,0)
    GREEN=(0,255,0)
    DARKRED=(255,0,200)
    knmx=60
    knmy=60
    sagx=20
    asagiy=20
    haritasol=False
    haritasag=False
    haritayuk=False
    haritaasg=False
    yembyk=10
    saga=True
    sola=False
    asg=False
    yuk=False
    hiz=20
    uyku=0.01
    kuyruk=[]
    gercekhiz=0 #ters orantı
    yemx=90
    yemy=70
    yazisekil=font.SysFont(None,40)
    degdi=False
    coktandegdi=False
    def yon(x):
    if int(x)==273 and (saga or sola)==True and (yuk and asg)==False:
    a=True
    b=False
    c=False
    d=False
    return a,b,c,d
    elif int(x)==274 and (saga or sola)==True and (yuk and asg)==False:
    a=False
    b=False
    c=False
    d=True
    return a,b,c,d
    elif int(x)==275 and (saga and sola)==False and (yuk or asg)==True:
    a=False
    b=True
    c=False
    d=False
    return a,b,c,d
    elif int(x)==276 and (saga and sola)==False and (yuk or asg)==True:
    a=False
    b=False
    c=True
    d=False
    return a,b,c,d
    else:
    return yuk,saga,sola,asg
    def hareket():
    global n,m
    if yuk==True:
    for i in range(1):
    n=knmy-hiz
    m=knmx
    sleep(uyku)
    return n,m
    elif asg==True:
    for i in range(1):
    n=knmy+hiz
    m=knmx
    sleep(uyku)
    return n,m
    elif sola==True:
    for i in range(1):
    m=knmx-hiz
    n=knmy
    sleep(uyku)
    return n,m
    elif saga==True:
    for i in range(1):
    m=knmx+hiz
    n=knmy
    sleep(uyku)
    return n,m
    while True:
    skor=len(kuyruk)+1
    pencerem.fill(BLACK)
    myfont=font.SysFont("Comic Sans MS",30)
    label=myfont.render("SKOR:"+str(skor),1,WHITE)
    pencerem.blit(label,(0,0))
    for index in range(len(kuyruk)-1,0,-1):
    a=kuyruk[index-1].x
    b=kuyruk[index-1].y
    kuyruk[index].x=a
    kuyruk[index].y=b
    draw.rect(pencerem,GRAY,(kuyruk[index].x,kuyruk[index].y,kuyruk[index].width,kuyruk[index].height),2)
    for index in range(len(kuyruk)-1,0,-1):
    if ((((bas.x-kuyruk[index].x)**2)+((bas.y-kuyruk[index].y)**2))**(1/2))<5:
    degdi=True
    if degdi:
    coktandegdi=True
    if coktandegdi:
    knmx=400
    knmy=300
    del kuyruk[:]


    for i in range(len(kuyruk)):
    ix=kuyruk[i].x
    ye=kuyruk[i].y
    if abs((yems.x)-ix)<15 and abs((yems.y)-ye)<15:
    yems.x=kuyruk[-1].x
    yems.y=kuyruk[-1].y
    if len(kuyruk) >0:
    a=bas.x
    b=bas.y
    kuyruk[0].x=a
    kuyruk[0].y=b
    draw.rect(pencerem,GRAY,(kuyruk[0].x,kuyruk[0].y,kuyruk[0].width,kuyruk[0].height),2)
    bas=draw.rect(pencerem,GRAY,(knmx,knmy,sagx,asagiy),2)
    yems=draw.circle(pencerem,RED,(yemx,yemy),10,2)
    if ((((bas.x-yems.x)**2)+((bas.y-yems.y)**2))**(1/2))<10:
    yenikuyruk=draw.rect(pencerem,GRAY,(knmx,knmy,sagx,asagiy),2)
    kuyruk.append(yenikuyruk)
    potx=randrange(1,79,2)
    poty=randrange(1,59,2)
    yemx=potx*10
    yemy=poty*10
    for olay in event.get():
    if olay.type==QUIT:
    quit()
    elif olay.type==KEYDOWN:
    kolay=olay.key
    yuk,saga,sola,asg=yon(kolay)
    sleep(0.1)
    knmy,knmx=hareket()
    if knmx>790:
    knmx=0
    elif knmx<0:
    knmx=800
    elif knmy<0:
    knmy=600
    elif knmy>590:
    knmy=0
    coktandegdi=False

    display.flip()





  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
  • mesajınız gelmedi yeni fırsatım oldu kodları incelemeye. dediğim gibi daha önce hiç pygame çalışmadığım için kodları tam olarak anlayamadım ve oyun algoritmalarına çok uzağım ancak genel hatlarıyla incelediğim ve klasik algoritmasına bakınca ufak bir kaç eksiklik gördüm sanırım. öncelikle son satırlarda tam olarak neden olduğunu anlayamadığım bir while bloğu var. sonsuz döngü olması için mi koydunuz onu? onun yerine muhtemelen pygame'de de if __name__ == "__main__": şeklinde başlayarak yazmanız gerekecek. onu bir kontrol edin düzeltmeniz gerekebilir.

    ayrıca github'da bir kaç kişinin snake kodunu inceledim üç aşağı beş yukarı sizinkine benzer yazılmış. onlarınkini bende exe'ye çevirdim ve açılmadı exe halleri ama google'da çok kısa "pygame exe not opening" gibi basit bir aramayla çokça sonuç çıkıyor özellikle stackoverlow'da sizinkine benzer sorun yaşayanlar var çözümü orada bulabilirsiniz.

    edit: şu arkadaş python gurusu sayılabilir, onun yaptığı .py to .exe çözümünü izler kendin denersen halledebilirsin



    < Bu mesaj bu kişi tarafından değiştirildi gel pc pc -- 3 Şubat 2019; 1:16:18 >




  • gel pc pc kullanıcısına yanıt
    Hocam ben bu işi hobi olarak yapıyorum.Oyunları tasarlayıp daha sonra yapay zeka üzerinde test edeceğim.While döngüsünü yılanın konumunun her döngüde değişmesi için yapıyorum.Yani ben profesyonel değilim, tıp okuyorum sağdan soldan öğrendiklerimle girdim bu işe :D algoritma yazmayı seviyorum yani öyle özetleyebilirim.O yüzden if__name=="__main__" gibi bir oluşumun neden kullanılması gerektiğini ve ne işe yaradığını bilmiyorum.Hatta nesne tabanlı programlamayı bile henüz öğrendiğim için kodumda hiç sınıf yok fark ettiyseniz.O yüzden mazur görün...
    Bıraktığınız kaynak ve çözüm yolları için çok teşekkür ederim :)
  • Konu hala güncel şöyle bir ekleme yapabiliyorum,tekrardan uzun soluklu bir araştırma yaptım.
    Bildiğiniz üzere error sonucu program hızlıca kapanıyor bu nedenle sorunu yakalamam çok uzun sürdü.Yaklaşık 20 defa screenshot aldım.Evet sonunda yakaladım her ne kadar amelece de olsa :)
    Sanırım sorun SysFont fonksiyonuyla alakalı.Ama neden problem oldu bilmiyorum.Buyrun hata mesajı ve python'da kullandığım hatayla alakalı satır.

    yazisekil=SysFont(None,40)

    Pyinstaller exe çevirme problemi
  • gel pc pc kullanıcısına yanıt
    Hocam telefon numaramı başka bir dhforum hesabında kullandığım için pm atamıyormuşum.Kusura bakmayın o yüzden buradan cevap vermek zorunda kaldım.

    Ben Anaconda ya da Pycharm kullanmadım.Sırf küçük sorunlar çıkartıyorlar ve bana kompleks geldiği için.
    Python'un kendi default IDLE kullanıyorum.
    Sorun sanırım ekrana yazı yazdırdığım kodlarda python dışında tanımlanması zor olabilir belki ondandır.Kodları buna uygun olarak düzenleyip tekrar deneyeceğim.
    Hocam tekrardan alakanız için çok teşekkür ediyorum.
  • Buyur eğer hala bulamadıysan exe hali ve py dosyası.En başta yazısekil diye tanımlamışsın daha sonra while döngüsünde tekrar tanımlamışsın.Ama üsttekini kullanmamışsın bunu neden yaptığını anlamadım.Ama çalışmamasındaki problem kullanmamak değil yukarda fontu none diye tanımlamışsın.None diye tanımlayınca freesanbold diye bir fontu otomatik olarak seçiyor.Ve bu font ya bozuk yada bilgisayarda bulunmuyor bu yüzden font hata veriyor(Sanırım herkezde veriyor bu hatayı).None yerine arial,comic sans ms gibi bilgisayarda bulunan bir fontu yaz.Ve birde import pygame olarak düzenledim en üstü
    Exeyi ise py dosyasını attıgın klasörde shift+sağ click>komut penceresini burada aç > 'pyinstaller dosyaadı.py' olarak yaptım

    Link




  • Doubleimp kullanıcısına yanıt
    Hocam emeğinize sağlık çok teşekkür ediyorum.

    Bir de yorum satırlarına bakınca da duygulandım.Sizin gibi iyilik sever insanlar oldukça bu Dünya dönecektir :))
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.