আমি কীভাবে পাইথনে একটি সেটআপ স্ক্রিপ্ট তৈরি করতে পারি সে সম্পর্কে নিজেকে জানার উপায় হিসাবে আমি এই খরগোশের গর্তটি শুরু করেছি। পাইথনের পছন্দটি এর সাথে আমার পরিচিতির মূল কারণ ছিল যদিও আমি নিশ্চিত যে এই কাজের জন্য পাইথনের চেয়ে আরও ভাল বিকল্প থাকবে।
এই স্ক্রিপ্টের লক্ষ্য হ'ল স্ক্রিপ্টটি চালিত মেশিনে আরওএস ইনস্টল করা এবং ক্যাটকিন পরিবেশ সেটআপ করা। দিকনির্দেশগুলি যথাক্রমে এখানে এবং এখানে পাওয়া যাবে ।
বর্তমানে যে স্ক্রিপ্টটি বসে আছে তা নিম্নরূপ:
subprocess.call(["sudo", "sh", "-c", "'echo \"deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main\" > /etc/apt/sources.list.d/ros-latest.list'"])
subprocess.call(["sudo", "apt-key", "adv", "--keyserver", "hkp://ha.pool.sks-keyserver.net:80", "--recv-key", "0xB01FA116"])
subprocess.call(["sudo", "apt-get", "update"])
subprocess.call(["sudo", "apt-get", "install", "ros-kinetic-desktop-full", "-y"])
subprocess.call(["sudo", "rosdep", "init"])
subprocess.call(["rosdep", "update"])
subprocess.call(["echo", '"source /opt/ros/kinetic/setup.bash"', ">>", "~/.bashrc", "source", "~/.bashrc"])
subprocess.call(["sudo", "apt-get", "install", "python-rosinstall", "-y"])
mkdir_p(os.path.expanduser('~') + "/catkin_ws/src")
subprocess.call(["(cd "+ os.path.expanduser('~') + "/catkin_ws/src)"])
subprocess.call(["(cd "+ os.path.expanduser('~') + "/catkin_ws && catkin_make)"])
subprocess.call(["(cd "+ os.path.expanduser('~') + "/catkin_ws && source devel/setup.bash"])
স্ক্রিপ্টটি বর্তমানে চালিত হলে এটি ত্রুটিটি দিয়ে ত্রুটিযুক্ত হয়:
Traceback (most recent call last):
File "setup.py", line 46, in <module>
subprocess.call(["(cd "+ os.path.expanduser('~') + "/catkin_ws/src)"])
File "/usr/lib/python2.7/subprocess.py", line 523, in call
return Popen(*popenargs, **kwargs).wait()
File "/usr/lib/python2.7/subprocess.py", line 711, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1343, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
আমি যাচাই করেছি যে টার্মিনাল উইন্ডো থেকে ম্যানুয়ালি সম্পাদন করার সময় কমান্ডটি সঠিকভাবে কাজ করে, এবং যেমন আমি বিশ্বাস করি যে এটি ওএসের মধ্যে এই স্ক্রিপ্ট এবং এর ক্ষেত্রটি কীভাবে পরিচালিত হয় সে সম্পর্কে এটি একটি মৌলিক ভুল ধারণা। যে অংশটি আমাকে প্রচুর বিভ্রান্তির কারণ ঘটাচ্ছে তা হ'ল এটি কেন অভিযোগ করে যে এটি সরবরাহিত ডিরেক্টরিটি সনাক্ত করতে অক্ষম, যখন আমি যাচাই করেছি যে এই ডিরেক্টরিটি বিদ্যমান। কমান্ডটি অজগর থেকে মুদ্রিত হয়ে একটি টার্মিনাল উইন্ডোতে আটকানো হলে কোনও ত্রুটি দেখা যায় না।
cwd
করার জন্য যুক্তিcall
os.chdir()