কীভাবে কেবল নিজের পাইথন স্ক্রিপ্ট (জিইউআই) এ বুট করবেন?


12

আমার নিম্নলিখিত সমস্যা রয়েছে: রাস্প্পিয়ান 3 বি চালিত রাস্পবিয়ান জেসি ব্যবহার করুন (সংস্করণ 4.4.26-ভি 7 +) আমি চাই একটি স্ব-লিখিত পাইথন স্ক্রিপ্টের জিইউআই শুরুতে কার্যকর করা হোক।

আমি জানি যে এই ওয়েবসাইটটি পাশাপাশি অন্যদেরও এই প্রশ্ন জিজ্ঞাসা করা হয়েছে, তবে রাস্পবিয়ান যেভাবে পরিবর্তন করে চলেছে এবং আমার পক্ষে কাজ করার আগে প্রস্তাবিত কোনও সমাধানের (নীচে দেখুন), আমি আবার এটি জিজ্ঞাসা করতে চাই।

আমার বোঝাপড়া থেকে, আমাকে এক্সসারভার লোড করা এবং পরে আমার স্ক্রিপ্টটি সম্পাদন করা দরকার। পুরো ডেস্কটপ লোড করার পরিবর্তে এটি হওয়া উচিত।

এটি অর্জনের একটি উপায় LXDE অটোস্টার্ট ফাইলের মাধ্যমে হওয়ার কথা ( এই উত্তরে বর্ণিত হিসাবে )। আমি ফাইলটির /etc/xdg/lxsession/LXDE-pi/autostartপাশাপাশি ফাইলটিও সম্পাদনা করেছি /etc/xdg/lxsession/LXDE/autostart(পূর্ববর্তীটিতে উল্লিখিত পোস্টে উল্লিখিত তিনটির পরিবর্তে চারটি লাইন রয়েছে) - লাইনগুলি যুক্ত করে @sudo python /full/path/to/file.pyএবং @openbox, তবে আমার পাই এখনও ডেস্কটপে বুট করে এবং স্ক্রিপ্টটি স্বয়ংক্রিয়ভাবে কার্যকর করে না। টীকা: আমি দুটি স্ক্রিপ্ট লাইন এবং স্ক্রিপ্ট লাইন একসাথে ওপেনবক্স লাইনটি উভয়ের একটির জন্য এবং উভয় ফাইলের জন্য চেষ্টা করেছি।

আর একটি কৌশল অন্তর্ভুক্ত rc.local ফাইল ( অফিসিয়াল ডকুমেন্টেশন হিসাবে প্রস্তাবিত )। তবে কেবল যুক্তটি কার্যকর python /full/path/to/file.py &হয়নি (যেহেতু এখনও আমার জিইউআই নিখোঁজ ছিল) এবং আরও যুক্ত করা startxকোনও উপকারে আসেনি কারণ আমি স্পষ্টতই পাইথন লিপির সাথে স্টার্টেক্সকে সংযুক্ত করতে পারি নি এবং পূর্ববর্তীটি এটি শুরু হওয়ার সাথে সাথেই বন্ধ হয়ে যায়।

কিছু পরামর্শ দেয় যে, (অতিরিক্ত) .xinitrc ব্যবহার করা উচিত। এটি অবশ্য কার্যকর হয় নি:

su -c python /full/path/to/file.py pi

এবং সর্বশেষে তবে সর্বনিম্ন নয়, কোনওভাবেই, এটি init.d ব্যবহার করে করণীয় হওয়া উচিত - তবে আমি এখনও এ সম্পর্কে বিশদ খুঁজে পাইনি।

আমি সঠিক দিকের দিকে কোনও ইঙ্গিতটির সত্যই প্রশংসা করব। আমার ভুল কোথায়? Rc.local বা .xinitrc এ আমার লাইনটি কেমন দেখতে হবে? বা পিক্সেল স্যুইচ সম্পর্কিত বড় পরিবর্তন হয়েছে এবং আমার অন্য কিছু চেষ্টা করা উচিত?


কিছু অতিরিক্ত তথ্য: স্ক্রিপ্টটির sudo অধিকারের প্রয়োজন। এটি পাইথন ২.7-এ লেখা হয়েছে, জিইউআই টিকিটার ব্যবহার করছে। জিইউআই পুরোপুরি স্ক্রিন পূরণ করে, তাই ব্যাকগ্রাউন্ড অপ্রাসঙ্গিক। স্ক্রিপ্টটি চিরতরে চলার কথা রয়েছে (বা এটি জিইউআইয়ের মাধ্যমে ব্যবহারকারী ইনপুট দ্বারা থামানো অবধি) এবং ওয়াইফাই এবং ইথারনেটের মতো সিস্টেম পরিষেবা ব্যবহার করে।


আরও তথ্য: সমস্ত স্থানীয়ভাবে ঘটছে।


স্পেসিফিকেশন: এখন পর্যন্ত আমি নেট অনুসন্ধান করতে, 8 টিরও বেশি সময় ব্যয় করেছি বিভিন্ন প্রারম্ভিক পয়েন্ট থেকে টিউটোরিয়াল চেষ্টা করে বা সেগুলিকে একসাথে মিশিয়ে। আমি এই সিদ্ধান্তে পৌঁছেছি যে, আমার স্ক্রিপ্টটি (যা পিক্সেল দিয়ে শুরু করার সময় পুরোপুরি কার্যকর হয়) ডেস্কটপবিহীন পরিবেশে চালিত হলে (যা আমি সন্দেহ করি) কাজ করে না বা একটি নতুন টিউটোরিয়াল প্রয়োজন, কারণ অক্টোবর ২০১ Ras রাসেপবিয়ানে পরিবর্তিত হয়েছে কোনও পুরানো টিউটোরিয়াল অচল করে দেওয়া। তদ্ব্যতীত, চ্যালেঞ্জটি একে অপরের থেকে স্বতন্ত্রভাবে স্ক্রিপ্ট শুরু করা বা জেসারভার (বা অনুরূপ কিছু) শুরু করার ক্ষেত্রে নয়, তবে লিঙ্কযুক্ত উভয় ক্ষেত্রেই যাতে স্ক্রিপ্টটি জেসারভারের তৈরি ডিসপ্লে ব্যবহার করবে।


আমি স্বীকার করি যে এটি খুব বেশি সহায়তার নয়, তবে সম্ভবত এটি XBMC (বা অন্যান্য এইচটিপিসি dicrtibution) বুট কীভাবে দেখার দরকার? বিকল্পভাবে, সম্ভবত এটি আপনার প্রশ্নের উত্তর দেবে raspberrypi.stackexchange.com/questions/11866/…
পেট্রা গ্ল্যাডখিখ

উত্তর:


12

গত একমাস বা তার জন্য আমি মূলত ঠিক একই জিনিসটিতে কাজ করছি, সুতরাং আমি কীভাবে এটি অনেকটা করতে হবে এবং রাস্পবিয়ান (পিক্সেল) এর সর্বশেষতম সংস্করণ দিয়ে এটি কীভাবে করতে হয় তা নিয়ে গবেষণা করেছি।

nodmএকটি সর্বনিম্ন ডিসপ্লে ম্যানেজার যা লোডিং LXDE কে বাইপাস করে এবং openbox(যা ইতিমধ্যে পাইয়ে ইনস্টল করা) একটি ন্যূনতম সেশন ম্যানেজার সরবরাহ করে এবং এক্স সার্ভারের সাথে কাজ করে।

Raspbian মধ্যে এই পরিবেশে সেট আপ করতে, ইনস্টল nodmসঙ্গে apt-getএবং সম্পাদনা ফাইল /etc/default/nodm। আপনার NODM_ENABLEDকাছে trueএবং এ বিকল্পটি সেট NODM_USERকরতে হবে pi(বা আপনার ব্যবহারকারীর নাম যাই হোক না কেন)।

তারপরে /home/pi/.xsessionনিম্নলিখিত বিষয়বস্তু সহ আপনার হোম ফোল্ডারে ( ) একটি কাস্টম এক্সেসিওন ফাইল তৈরি করুন ( whileলুপটি প্রয়োজনীয় নয়, এটি ক্র্যাশ হলে এটি কেবল স্বয়ংক্রিয়ভাবে পাইথন স্ক্রিপ্টটি পুনরায় চালু করবে):

#!/usr/bin/env bash
exec openbox-session &
while true; do
  python3 /home/pi/Documents/script.py
done

আমি মনে করি এটি প্রয়োজনীয় এবং এটি হওয়া উচিত। এটিকে স্বয়ংক্রিয়ভাবে সেট আপ করতে আমি বাশ স্ক্রিপ্ট লিখেছিলাম:

sudo apt-get -y install nodm

# Edit nodm config file
sudo sed -i -e "s/NODM_ENABLED=false/NODM_ENABLED=true/" -e "s/NODM_USER=root/NODM_USER=pi/" \
  /etc/default/nodm

# Create custom Xsession file
printf "%s\n" \
  "#!/usr/bin/env bash" \
  "exec openbox-session &" \
  "while true; do" \
  "  python3 $PWD/main.py" \
  "done" \
  > /home/pi/.xsession

মন্তব্য:

  • আমি এই লিঙ্কটি সহায়ক বলে খুঁজে পেয়েছি তবে কিছু তথ্য এখন পুরানো: https://blog.qruizelabs.com/2014/04/29/raspberrypi-kiosk-matchbox-uzbl/ তারা ম্যাচবক্স উইন্ডো ম্যানেজার ব্যবহার করে, যা কার্যকর হয়নি আমার জন্য কারণ আমার একাধিক উইন্ডো সমর্থন প্রয়োজন, তবে আপনি যদি না করেন তবে এটি একটি দুর্দান্ত বিকল্প হতে পারে।
  • উপরের সমাধানটি কাজ করেছে, তবে আমি যথাসম্ভব হালকা পরিবেশ চাইছিলাম, তাই আমি রাস্পবিয়ান লাইটে স্যুইচ করেছিলাম যার কোনও জিইউআই নেই এবং কেবল একেবারে প্রয়োজনীয় প্যাকেজগুলি ইনস্টল করা শুরু থেকে শুরু হয়েছিল। প্রক্রিয়া প্রশংসনীয় অনুরূপ, কিন্তু ছাড়াও nodmআপনি ইনস্টল করতে হবে xserver-xorg, xinit, openboxএবং অন্য কোন নির্ভরতা আপনার স্ক্রিপ্টটি হয়েছে। তারপরে আপনি যদি এক্সসিয়োশন ফাইলে পাইথন স্ক্রিপ্ট চালনার পরিবর্তে ওপেনবক্স ব্যবহার করছেন তবে কোডটির যে অংশটি এটি চালায় সেটিকে পৃথক স্ক্রিপ্টে স্থানান্তরিত করা দরকার ( /home/pi/.config/openbox/autostart)। আমি চাইলে এটি কীভাবে করা যায় সে সম্পর্কে আমি আরও বিস্তারিত বলতে পারি।

হাই জোহসন, আপনি রাস্পবিয়ান সম্পর্কে উপরে বর্ণিত পদ্ধতিটি ব্যবহার করেছিলাম এবং এটি কাজ করে চলেছে, আপনাকে ধন্যবাদ! আমি রাস্পবিয়ান লাইটে চেষ্টা করতে চেয়েছিলাম যা আপনি নিজের সর্বশেষ নোটে উল্লেখ করেছেন। আপনি তালিকাভুক্ত অতিরিক্ত নির্ভরতা ইনস্টল করেছি তবে অ্যাপটি শুরু হয়নি start আমি ধরে নিয়েছি এটি আলাদা স্ক্রিপ্টে নিয়ে যাওয়ার বিষয়ে আপনার সর্বশেষ মন্তব্যের সাথে সম্পর্কিত। আমার কাছে কোনও হোম / পাই / .কনফিগ / ওপেনবক্স ফোল্ডার নেই তাই আমি এটি তৈরি করেছি এবং অটোস্টার্ট ফাইল কিন্তু এটি কাজ করছে বলে মনে হয় না। আপনি দয়া করে বিস্তারিত বলতে পারেন? ধন্যবাদ
অ্যাঞ্জেলোকিউ

@ অ্যাঞ্জেলোকিউ আপনি কি এটি রাস্পবিয়ান লাইটে কাজ করার জন্য পেয়েছেন?
পল

1

অটোস্টার্ট ফাইলটি বিভিন্ন স্থানে বিদ্যমান। এটি কেবল সঠিক পথে সঠিক অটোস্টার্ট ফাইল সম্পাদনা করার বিষয়। আমি সম্পাদনা করার চেষ্টা করেছি /home/pi/.config/lxsession/LXDE-pi/autostart। অবশেষে আমার জন্য কৌশলটি।

/etc/xdg/lxsession/LXDE-pi/autostart ভুল পথ বলে মনে হচ্ছে


0

অতীতে আরপিআই-তে আমি যে নোংরা কৌশল ব্যবহার করেছি তা হ'ল লাইনের /etc/rc.localঠিক আগে আমার ফাইলে কমান্ড স্থাপন করা exit 0। আপনার ক্ষেত্রে আমি নিম্নলিখিত লাইনটি চেষ্টা করে রিবুট করব।

python /full/path/to/file.py &

যেমনটি আপনি বলেছেন যে সুডো স্তরের অনুমতিগুলির প্রয়োজন আপনার পরিবর্তে suআপনার আগে যে কমান্ডটি চেষ্টা করেছিলেন সেটি সামঞ্জস্য করতে হতে পারে কারণ এখনই মনে হচ্ছে আপনি piব্যবহারকারীর অধীনে চালানোর চেষ্টা করছেন ।

আরসি.লোকাল ফাইল ব্যবহার সম্পর্কে আমার পরামর্শ সম্পর্কে একটি সতর্কতা, যদি আপনার স্ক্রিপ্টটি নন শূন্য স্থিতি নিয়ে উপস্থিত হয় তবে আপনি পরীক্ষার সময় নিরাপদ হওয়ার জন্য বুটটি সম্পন্ন করতে পারবেন না আপনি প্রস্থানটি বের করার জন্য নিম্নলিখিত চেষ্টা করতে পারেন এখনও 0 সমান

python /full/path/to/file.py & || exit 0

সম্পাদনা এবং আপডেট

কিছু অনুসন্ধান ডেটা সন্ধান করা সত্ত্বেও, এমন একটি শিক্ষণযোগ্য পাওয়া যায় যা পাইথন স্ক্রিপ্টগুলি লোড করার সুবিধার্থে ক্রোন ট্যাবে রেফারেন্সযুক্ত একটি লঞ্চার স্ক্রিপ্ট ব্যবহার করে তা দেখায়। পাইথনটি লোড করার জন্য একটি sh / বাশ স্ক্রিপ্ট লোড করতে ক্রোন লোড করার আশেপাশে মনে হতে পারে তবে ... এটি কিছুটা বাঁকানো ধারণা তৈরি করার জন্য যথেষ্ট সংশ্লেষিত।


মন্তব্যগুলি বর্ধিত আলোচনার জন্য নয়; এই কথোপকথন চ্যাটে সরানো হয়েছে ।
hanনিমা

0

সুতরাং আপনার কোডটির কী ইনপুটটির উপর নির্ভর করে এই সমাধানটি কাজ করতে পারে।

আমি প্রথম জিনিসটি আমার / ডিরেক্টরিতে একটি স্ক্রিপ্ট তৈরি করেছিলাম যা এরকম হয়:

#!/bin/bash
echo "Starting program..."
cd /home/pi/myFolder
sudo python3 myPython.py $@ #$@ takes all arguments and passes them to python.
exit 0

আপনি এটি দিয়ে চলমানযোগ্য করতে হবে chmod -x scriptName.sh

তারপরে crontab -eটার্মিনালে এবং অ্যাড করুন@reboot sudo bash /scriptName.sh

আপনার বুট বিকল্পটি সিএলআইতে সেট করুন এবং আপনার ভাল হওয়া উচিত! এটি আমার 3 বি চলমান রাস্পবিয়ান নিয়ে কাজ করেছে।

একটি সতর্কবাণী, আপনি যদি আপনার কিওস্ক / স্ক্রিনের জন্য কোনও টাচ স্ক্রিন ব্যবহার করছেন তবে আমি এখনও এটি বের করতে পারি নি। এটি মাউস ইনপুটটির সাথে দুর্দান্ত কাজ করবে তবে টাচ ইনপুট হিসাবে, আমি যে স্ক্রিনটি ব্যবহার করার চেষ্টা করছি তার জন্য এটি এটিকে অব্যর্থহিত করে তোলে off

দ্রষ্টব্য : যদি আপনার কোডটি আইও আমার মতো ফাইল করছে তবে আপনাকে অবশ্যইcd আপনার কোডটির অবস্থানটি আপনার লঞ্চ স্ক্রিপ্টে বা পাইথনটিতে নেভিগেট করতে ব্যবহার করতে হবে এটির অবস্থানটি আপনার স্ক্রিপ্টের হিসাবে ধরে নেবে এবং তদনুসারে ফাইল IO সম্পাদন করবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.