Merhabalar, yazdığım tek dosyadan oluşan python kodunu raspberry pi’de açılışta çalıştırmak istiyorum o yüzden de şuan ubuntu kullanarak debian paketleme yapmaya çalışıyorum. yaklaşık 1 haftadır uğraşıyorum ve hiç bir şekilde başaramadım. yardımcı olursanız sevinirim.
Açılışta çalıştırmak için .py dosyasını crontab’a eklemek daha iyi olmaz mı?
bu yöntem hakkında pek bilgim yok, yalnız .py olarak çalıştırmak için kullandığım modülleri kurmam gerekecek ve bu da yöneticimin istediği bir şey değil.
cron, Unix benzeri işletim sistemlerinde komut veya komut dosyalarını periyodik olarak
çalıştırabilmemize olanak sağlayan bir araçtır.
O zaman
~/.profile dosyasının sonuna
python3 Masaüstü/program.py gibi bir komut ekleyebilir veya bir
.desktop dosyası oluşturup,
~/.config/autostart/ dizinine yerleştirebilirsiniz.
Ayrıca,
/usr/share/applications/ dizininde, yüklü programlarınızın
.desktop dosyalarını bulabilir ve şu kaynaktan da yararlanabilirsiniz:
Python programı exe olarakda çalışır ve linux dağıtımların çoğunum exe açtığını biliyorum. Sadece exe’ye compile etmeniz yeterli olacaktır ve bunun için de yeterli sayıda araç var. modüllerle beraber compile eder.
Aynı zamanda bu blog post’unu temel alarak hem compile ettiğiniz exe’nizi, hemde isterseniz python programınızı çalıştırabilirsiniz.
Hiç denediniz mi? Ben denedim, diğer dillere göre zaten yavaş olan Python’un çok daha yavaş çalışmasına sebep oluyor.
PyInstaller Linux’ta “.exe” oluşturmaz, Linux çalıştırılabiliri(executable) oluşturur.
Bazılarında sorun çıkarıyor.
Ayrıca, Linux’ta Python ile yazılan programların derlendiğini hiç görmedim, hepsi yazıldığı haliyle durur. Çünkü GNU/Linux dağıtımlarının neredeyse tamamında Python kuruludur. Eğer gereken Python sürümü ve/veya gereken paketler/modüller kurulu değilse program kurulurken bağımlılık olarak o da kurulur.
Bende çok kullandığımı söyleyemem ancak arkadaş nasıl bir şey yazdığını dememiş. Hem çıkan sorunları çözmek çoğu zaman zor değil. Her neyse, ben önerimi yaptım. Ancak .deb oluştursada bir şey fark edeceğini sanmam. Çok linux meraklısı değilim. Ancak zaten yazıma eklediğim blog yazısına tamamen göz atarsanız, python dosyalarınıda başlangıçta çalıştırmak için ne yapılması gerektiğini gösteriyor bence.
Desktop/X/grafik arayuzu istiyor mu?
Kullanici olarak calismak istiyor veya kullanicinin
environment’ini bekliyor mu?
Hayirsa systemd servisi veya rc.local satiri olarak calistirilabilir.
Ben öyle bir tavsiyede bulunmadım. Sadece Debian Paket’leri oluşturmak konusunda bir kaynak gösterdim.
1, 3, 4 ve 5 numaralı yöntemler yönetici ayrıcalıkları gerektiriyor. Fakat,
cümlesinden, konu sahibinin yönetici ayrıcalıklarına sahip olmadığı anlaşılıyor.
2. yöntem ise
bash her çalıştırıldığında, programın da çalıştırılmasına sebep olur; ama
.profile dosyası sadece oturum açıldığında çalıştırılır.
Arayüz kullanıyorum evet, ve kullandığım modüller şunlar:
import sys from PyQt5.QtGui import * from PyQt5.QtWidgets import * from PyQt5.QtCore import * import cv2 from pyModbusTCP.server import ModbusServer, DataBank import socket
Eksik Bilgi verdiğim için özür dilerim, Yönetici ayrıcalıklarını kullanabilecek durumdayım, söylemek istediğim şu ki: programı windows ortamında setup olarak verdim ve bilirsiniz ki kullanıcının bir şey yapmasına gerek kalmadan kurup kullanabiliyor yalnız proje yöneticim linux ortamında da benzer bir şekilde istiyor normalde kullanılacağı yer raspberry pi ama genel olarak basit bir şekilde kullanılabilir olmasını istiyor o yüzden .deb olarak paketlemek istiyorum.
ayrıca ubuntu üzerinde .py olarak çalıştırmaya çalıştığım da da bir problem ile karşılaştım. tüm modülleri kurmama rağmen pyModbusTCP hata veriyor onu kodlardan silince çalışıyor.
kullandığım modüller ise şunlar:
import sys from PyQt5.QtGui import * from PyQt5.QtWidgets import * from PyQt5.QtCore import * import cv2 from pyModbusTCP.server import ModbusServer, DataBank import socket
Pyinstaller kullanarak şu şekilde yürütülebilir dosya oluşturdum,
buradan deneme adlı yürütülebilir dosyayı çalıştıramıyorum bunun benzerini modbus tcp kullanmadan oluşturdum o sorunsuz çalışıyor ama deneme isimli dosya açılmıyor, terminalden python dosyasını çalıştırmayı denedim hata verdi ama sudo ile root olduğumda hata vermeden çalıştı
yardımcı olur musunuz lütfen?
Modül dokümantasyonun 3.6. bölümü’nde verilen örnekte şöyle yazıyor:
run this as root to listen on TCP priviliged ports (<= 1024)
default Modbus/TCP port is 502 so we prefix call with sudo
yani,
Ayrıcalıklı TCP portlarını (<=1024) dinlemek için bunu root olarak çalıştırın
varsayılan Modbus/TCP bağlantı noktası 502’dir, bu yüzden sudo ile önek çağrısı yaparız
Acaba programınızın dinlemeye çalıştığı port sebebiyle normal kullanıcı olarak çalıştıramıyor olabilir misiniz?
Çok teşekkür ederim yardımlarınız için, evet söylediğiniz gibi yayını 1030. porttan yaptığımda root olmama gerek kalmadı ve bu sorunum çözülmüş oldu yalnız şuan bu programı raspberry pi’de nasıl çalıştıracağımı bilmiyorum çalıştırılabilir dosya ubuntu da tıkladığım an açılıyor ama raspberry de o şekilde olmuyor ayrıca bu dosyayı açılışta çalışacak hale getirmem lazım.
Rica ederim.
Çünkü Raspberry Pi’nin işlemci mimarisi(aarch64), dizüstü/masaüstü bilgisayarlarınkinden farklıdır. Siz o dosyayı kendi bilgisayarınızda oluşturduğunuz için sadece bilgisayarınız ile aynı işlemci mimarisine sahip bilgisayarlarda çalışabilir.
PyInstaller’ı Raspberry Pi üzerinde çalıştırmayı deneyebilirsiniz, fakat PyInstaller’ın aarch64 mimarisini desteklediğinden emin değilim.
Bununla ilgili yukarıdaki yöntemlerin hiçbiri işe yaramadı mı?
Açıkçası raspberry’ dosyayı çalıştıramadığım için açılışta çalıştırmayı denemedim henüz. bir konu açıp ta sorularımın tükenmemesi de rahatsız ediyor beni biraz, ama hala dosyayı raspbian ’ da çalıştıramıyorum
Yani Raspberry Pi’nize PyInstaller kurarak Python dosyanızı Raspberry Pi üzerinde çalıştırılabilir hale getirmenize rağmen çalışmıyor mu?
Yani şöyle: raspberry pi’ ye pyinstaller kurdum yalnız çalıştırılabilir dosya oluşturma çalışırken " Module ‘PyQt5’ has no attribute ‘version’ uyarısı alıyorum ama qt kurulu .py yi çalıştırmayı denerken de opencv ile ilgili hata alıyorum
Hmm… Sanırım bu iş sandığımdan daha uzun sürecek.
Hata mesajlarını paylaşırsanız daha kolay yardımcı olabiliriz.