Cift tiklayarak calisan python programi

Arkadaslar windows ve linuxda asagi yukari calisma sekli ayni linuxda yazidigim .py uzantili python dosyasini ancak terminaldan python dosya.py yazarak calisdira biliriyorum acaba normal programlar gibi cift tiklayarak calistiramazmiyiz?

Windows’ta ‘py’ dosyalarını Python programı ile ilişkilendirerek çift tıklama ile açma yapılabiliyor. Linux’te de böyle bir şey mümkündü diye hatırlıyorum. Ancak kullandığınız dağıtım ve masaüstü ortamına göre değişebilir bunun nasıl yapılabileceği.

1 Beğeni

Debian Gnome kullaniyorum

Merhaba.

Şu iki satırdan birini dosyanızın ilk satırına yazın:

#!/usr/bin/env python
#!/usr/bin/env python3

Sonra da dosyaya çalıştırma izni verin:

$ sudo chmod u+x dosyanız.py

Bu şekilde çift tıklamanın çalışması gerekiyor. Bu yöntem ayrıca diğer dağıtımlar için de çalışmalı.

İyi çalışmalar.

windows için kullandım :slight_smile:

ben cx_Freeze kullanarak hallettim .Öncelikle python projeni tamamla ve bir isim ver ben “deneme1.py” diyeceğim ardından “setup.py” dosyası oluştur.Bu arada bunları aynı klasöre koy düzenli olsun çünkü build dosyası kuracağız içine , nedir bu dosya dersen kabaca programını çalıştıracak modüllerin barındığı ve render edildiği dosya diyebiliriz.setup dosyasının içine şu kodları gir.

from cx_Freeze import setup, Executable
import sys
import os
import tkinter

base = None

if sys.platform == 'win64':
    base = "Win64GUI"


executables = [Executable("onurip.py", base=base)]

packages = ["tkinter"]
    options = {
        'build_exe': {
            'includes': ["os", "tkinter"],
            'include_files': [r"C:\Users\Admin\AppData\Local\Programs\Python\Python36-32\DLLs\tcl86t.dll",
                      r"C:\Users\Admin\AppData\Local\Programs\Python\Python36-32\DLLs\tk86t.dll"]
},

}


os.environ['TCL_LIBRARY'] = r'C:\Users\Admin\AppData\Local\Programs\Python\Python36-32\tcl\tcl8.6'
os.environ['TK_LIBRARY'] = r'C:\Users\Admin\AppData\Local\Programs\Python\Python36-32\tcl\tk8.6'
setup(
    name="Poraksis",
    version="1.0",
    description="Test",
    options=options,
    executables=executables
)

Bu dosyayı oluştururken python dosyanın hangi dizinde olduğuna dikkat et sonra benim gibi yarım saatin heba olmasın.

Şimdi komut istemcini aç >
dosyaların olduğu dizine gel>
"python setup.py build" yaz enter’a bas>

DOĞRU yaptıysan build dosyasının içinde exe oluşmuş olmalı artık başka bilgisayarda kullanabilirsin.

DİPNOT: tcl ve dlls klasörlerindeki değişikliğe dikkat edin bunlar gui arayüzünün çalışması için şarttır.

Emeğinize sağlık. Ben sizinkinden bana göre daha kolay bir yöntem önereyim .exe dosya oluşturmak için.

sudo pip install pyinstaller ya da (pip3)

kurulur.

Ardından çevirilecek kaynak dosyanın bulunduğu dizine gelinerek terminal açılır.

pyinstaller -F ornek.py

komutu verilir. Burada -F parametresi gerekli bütün libleri üretilecek .exe dosyasına katar. Dolayısıyla programınız bağımsız çalışır.

Üretilen dosya oluşan dist klasörünün içinden alınır.

1 Beğeni

$ sudo chmod u+x dosyanız.py

olarak ayarladım. çift tıklama ile açılıyor fakat önce execute, terminal, vs seçenekler çıkıyor. bunu nasıl önleyebiliriz?

@Engin_Kanat

Mesela diyelim HOME dizininde test.py isminde bir dosyanız var. Yapmanız gereken şey şu:

  1. Dosyaya sağ tıklayarak veya dosya seçili haldeyken CTRL + i tuşlarına basarak Özellikler seçeneğini seçin. Daha sonra Erişim Hakları isminde bir sekme görmeniz lazım. Bu sekmedeki Çalıştırma seçeneğini aktif hale getirin.
    2019-12-26 17-03-04 ekran görüntüsü

  2. İsmi test.desktop olan bir dosya oluşturun.

  3. Dosyanın içine aşağıdakileri yazın.

[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Name=test
Icon=
Exec=./test.py
  1. Dosyası kaydedin ve çıkın.
  2. Oluşturduğunuz bu dosyaya sağ tıklayarak veya dosya seçili haldeyken CTRL + i tuşlarına basarak Özellikler menüsünü açın. Erişim Hakları sekmesine gelin ve Çalıştır seçeneğini aktif hale getirin.
    2019-12-26 17-06-24 ekran görüntüsü
  3. Daha sonra oluşturduğunuz bu test.desktop dosyasına çift tıklayın. Şöyle bir uyarı almanız gerekiyor.
    2019-12-26 17-07-28 ekran görüntüsü
  4. Güven ve Başlat seçeneğine tıklayın. Bundan sonra artık test.py script dosyasını çalıştırmak için ismi test olarak değişen test.desktop dosyasına çift tıklayabilirsiniz.

Exec={test.py’nin ilk satirindaki #!interpreter} ./test.py dersek 1. adima gerek yok.

​5. adima gerek yok.

Evet, @aib’in dediğin gibi 1. ve 5. adımlara gerek yok.

  1. py uzantılı dosyanın 1. satırında shebang ifadesi yer alsın.
    Örnek: #!/usr/bin/env python3

  2. Bir tane desktop dosyası oluşturun, ilgili yerleri (name ve exec satırlarını) değiştirerek dosyanın içine aşağıdakileri yazın:

[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Name=test
Icon=
Exec=./test.py
  1. İlgili yerleri değiştirerek konsola aşağıdaki komutu yazın.
    chmod +x test.py test.desktop

  2. Sonra da oluşturduğunuz desktop uzantılı dosyaya çift tıklayın.

Yok, dedigim tam olarak buna gerek yok.

Dosyayi ./test.py yerine /usr/bin/env python3 ./test.py seklinde calistirdigin surece dosyayi executable yapmana gerek yok: Basina #! koymaya da, executable bit’lerini set etmeye de (+x) gerek yok.

Exec satırındaki ./test.py yerine /usr/bin/env python3 ./test.py yazdım, aşağıdaki uyarıyı alıyorum ve test.desktop dosyası (bu örnekte ismi d.desktop) açılmıyor.
2019-12-27 13-54-05 ekran görüntüsü

XDG standardinda yok; KDE, LXDE ve XFCE’de calisiyor. Gnome mu Unity mi o?

Neyse, bazi versiyonlari icin gerekiyormus hakkaten o a+x. Bazi versiyonlari icin ise:

Bu arada /usr/bin/python3'u dogrudan calistirmak da mantikli olabilir. (env hack’ine oldum olasi uyuz olmusumdur)

Bu arada py dosyasini executable yapmaya hala ihtiyac yok. (Degil mi?)

Shell script gibi surekli calistirilmayacaksa (https://github.com/aib/dotfiles/blob/master/bin/git-drop-commits.py) interpreter’ini explicit bir sekilde yazmanin daha dogru olduguna inaniyorum artik ("python3 hede.py"):

  • kolay calistirmaya gerek yok; shell’de ust ok veya IDE’de F5 var zaten
  • env hack’ine gerek kalmiyor
  • interpreter opsiyonu verebiliyoruz (terminal disinda calistirirken -u gerekiyor)

Gnome mi unity mi emin değilim. gnome-shell, gnome-session-b çalışıyor şu anda.
Tab Completion’ı kullanarak unity ile alakalı sadece unity-scope-loader programını buluyorum. Ama gnome ile alakalı çok fazla program var.

gnome-calculator              gnome-keyring-daemon          gnome-session-inhibit         gnome-terminal.real
gnome-calendar                gnome-language-selector       gnome-session-properties      gnome-terminal.wrapper
gnome-characters              gnome-logs                    gnome-session-quit            gnome-text-editor
gnome-control-center          gnome-mahjongg                gnome-shell                   gnome-thumbnail-font
gnome-disk-image-mounter      gnome-menus-blacklist         gnome-shell-extension-prefs   gnome-todo
gnome-disks                   gnome-mines                   gnome-shell-extension-tool    gnome-tweaks
gnome-font-viewer             gnome-power-statistics        gnome-shell-perf-tool         gnome-www-browser
gnome-help                    gnome-screenshot              gnome-sudoku                  
gnome-keyring                 gnome-session                 gnome-system-monitor          
gnome-keyring-3               gnome-session-custom-session  gnome-terminal    

Herhalde gnome ön-tanımlı. (?)
Ama chmod +x hede.py komutunu kullanmak gerekiyor gerçekten. Çünkü diğer türlü çalışmıyor. Güvenilir uygulama başlatıcı uyarısına bir kereliğine evet dedikten sonra, bir daha karşımıza böyle bir soru gelmiyor.

Yorumlayıcı kısmına bazen #!/usr/bin/python3, bazen #!/usr/bin/env python3, bazen #!/usr/bin/env python3.8 yazıyorum. Yani değiştiriyorum arada.

Aynen öyle, bir python betiğini executable yapmaya gerçekten ihtiyaç yok. Hiç Python bilgisi olmayan bir arkadaşa Python’ı kur, betiği de filanca yolla çalıştır diyebiliyorsun ve karşı taraf hiç bir sorun yaşamadan programı kullanabiliyor. Hatta Ubuntu kullanan birisine Python’ı kur bile deme ihtiyacı oluşmuyor. Scripti yolluyorsun o çalıştırıyor. Betiğin içine gerekli modüllerin kurulumunun talimatını da veriyorsun. Kullanıcının tek yapması gereken python3 hede.py yazmak oluyor. Onu da yazsın bir zahmet. :innocent:

Özetle benim için programı ./hede.py şeklinde çalıştırmak, çift tıklayarak çalıştırmaktan daha kolay ve kullanışlı. Tabi başkasına farklı bir yöntem daha kullanışlı gelebilir, orasını bilemem.