Python dosyası nasıl çalıştırılır

Herkese merhaba,
Python öğrenmeye başladım ve python 3.7 kurdum. Herkesin ilk yaptığı gibi Hello world ile başladım. idle de print(“hello world”) yazdığımda dosyayı kaydedip çalıştırmak istediğimde dos penceresi ekranda yansıyıp kayboluyor. Aynı şeyi notepad de yazıp .py dosyası olarak kaydettim. çift tıkladığımda otomatik run yapmıyor. Sadece idle de yazıp menüden run tuşuna bastığımda oluyor. Üstte yaptığım gibi çift tıklama ile print çalışmaz mı?
Yardımlarınız için şimdiden teşekkürler

Python dosyalarını çift tıklayarak çalıştırmanın birden fazla yolu var.

  1. Py uzantılı dosyanızı pyc uzantılı derlenmiş bir dosyaya dönüştürebilirsiniz. Bunun için yapmanız gerekenler şunlar:

1.a) py uzantılı dosyanızın bulunduğu yerde komut satırını açın ve aşağıda linki verilen kütüphaneyi kullanarak py uzantılı dosyayı pyc uzantılı dosyaya dönüştürün.

This module provides some utility functions to support installing Python libraries. These functions compile Python source files in a directory tree. This module can be used to create the cached byte-code files at library installation time, which makes them available for use even by users who don’t have write permission to the library directories.

Kaynak: https://docs.python.org/3/library/compileall.html

python -m compileall dosya_adi.py

1.b) Yukarıdaki komutu çalıştırdıktan sonra, komut satırını açtığınız dizinde __pycache__ isimli bir klasörün oluşmuş olması gerekir. pyc uzantılı dosyayı bu klasörün içinde bulabilirsiniz. Ve bu dosyayı, çift tıklayarak çalıştırabilirsiniz.

  1. Bir tane bat dosyası ile Python programınızı çift tıklayarak çalıştırabilirsiniz.

2.a) Metin Belgesi açılır, içine de aşağıdakiler yazılır.

"Python exe dosyasının bulunduğu dizinin adresi\python.exe" "Çift tıklayarak çalıştırmak istediğiniz scriptin adresi\dosya.py"
pause

2.b) Bu metin belgesinin uzantısı txt olarak kaydedilir. Siz bu dosyanın uzantısına bat yazarsanız, artık bir batch dosyanız olmuş olur. Ve bu dosyaya çift tıklayarak, py dosyanızı dolaylı yoldan çalıştırabilirsiniz.

  1. PyInstaller, cx_Freeze gibi 3. parti kütüphaneleri kullanarak python betik dosyanızı exe uzantılı, yorumlayıcıya ihtiyaç duymayan, çift tıklayarak çalışan dosyalar oluşturabilirsiniz.
2 Beğeni

Calisir, ve anlattigin kadariyla calisiyor da. Sorun burada print'in calismamasi degil, calistiginin gozukmemesi.

print kullanarak her programda standart olan “standard output” adli veri akisi ciktisina bir yazi yazdin. Kullandigin isletim sistemindeki kullandigin calistirma yontemi, bu ciktiyi sana basarili bir sekilde gosteremiyor.

En basit cozum, yazi tabanli girdi-ciktili programlari calistirmak icin tasarlanmis “terminal emulator” sinifina ait programlardan birini kullanmak. Windows NT’deki CMD.EXE bunlarin en dandik ornegi.

Daha fazla bir sey soyleyebilmek (terminal programi onerisi vermek, cift tiklayinca olan calistirma yontemini degistirmek) icin kullandigin isletim sistemini bilmemiz gerekiyor.

2 Beğeni

@dildeolupbiten güzel bilgiler vermiş ama benim anladığım kadarı ile soruda belirtilen durum farklı. Siz bir .py dosyasına print('Hello World!') yazıyorsunuz ve kaydedip üstüne iki defa tıklayarak (yani IDLE kullanmadan) çalıştırmaya çalışıyorsunuz. Aslında programınız çalışıyor ama siz çalışmadığını sanıyorsunuz. Bir program işleyeceği bir yönerge kalmadığında kapanır. Sizin kodunuz çok kısa olduğu için daha siz göremeden çalışıp bitiyor ve terminal de kapanıyor. IDLE ise bir geliştirme ortamı olduğu için bize kolaylık sağlayarak kodumuz bittiğinde bizi etkileşimli kabuk ile devam ettiriyor. Şimdi siz bir programı üstüne çift tıklayarak açtığınızda işi bittiğinde hemen kapanmamasını istiyorsanız tek yapmanız gereken kodunuzun sonuna programın beklemesini sağlayacak bir komut koymak. Bunun en kolay yolu da input(). Çünkü enter tuşuna basılana kadar bu kod çalışmayı bırakmış olmaz.

2 Beğeni

Verdiğiniz bilgiler için çok teşekkür ederim. Çok faydalı oldu benim için. EkremDincel, sizin de söylediğiniz gibi input() yapıp kaydedince ekran sabit kaldı ve yazım çıktı.

Verdiğiniz bilgiler için teşekkürler.