খুব সহজ প্রশ্ন: লিনাক্সে পাইথনকে কেন লাইনের প্রয়োজন হয়
#!/usr/bin/python
অজগর ফাইলের শুরুতে, যেহেতু উইন্ডোজ নেই?
এটার কাজ কি? 'পাইথনের লিঙ্কগুলি' বর্ণনার কারণটি কিছুটা অস্পষ্ট ...
python myscript.py
পরিবর্তে চালাতে পারেন ।
খুব সহজ প্রশ্ন: লিনাক্সে পাইথনকে কেন লাইনের প্রয়োজন হয়
#!/usr/bin/python
অজগর ফাইলের শুরুতে, যেহেতু উইন্ডোজ নেই?
এটার কাজ কি? 'পাইথনের লিঙ্কগুলি' বর্ণনার কারণটি কিছুটা অস্পষ্ট ...
python myscript.py
পরিবর্তে চালাতে পারেন ।
উত্তর:
পাইথনের লিনাক্সে তেমন কোনও বিশেষ প্রয়োজন নেই। এটি ইউনিক্স / লিনাক্সের প্রোগ্রাম লোডার যা "শেবাং" লাইনটি কল করে, এটি ব্যবহার করে। এটি আসলে সীমাবদ্ধতার পরিবর্তে একটি বৈশিষ্ট্য, তবে আমরা এটি মুহূর্তের মধ্যে পেয়ে যাব। "শেবাং" -র উইকি পৃষ্ঠায় আরও বিশদ রয়েছে তবে আমি উইন্ডোজটির সাথে এখানে একটি তুলনা করার পাশাপাশি একটি ওভারভিউ দেওয়ার চেষ্টা করব।
প্রথমে উইন্ডোজের পরিস্থিতিটি দেখুন:
.
পাইথন ফাইলের ক্ষেত্রে, এটি বিশেষভাবে হয় .py
।.py
নতুন ইনস্টল করা অ্যাপ্লিকেশন পাইথন (অর্থ্যাৎ পাইথন ইন্টারপ্রেটার) ব্যবহার করে ফাইলগুলি খুলতে হবে ।.exe
এবং .bat
ফাইলগুলি উইন্ডোজ ব্যাচ-স্ক্রিপ্ট হিসাবে কার্যকর করা হয়।.py
ফাইলগুলি ব্যবহারের পরিবর্তে python.exe
এটি অন্য কিছু প্রোগ্রামের সাথে টেক্সট সম্পাদক হিসাবে খোলার উচিত notepad.exe
।
python <scriptname>.py
(বা .bat
এটি করার জন্য একটি ফাইল লিখুন )।এখন, পাইথন স্ক্রিপ্টের শীর্ষে একটি শেবাং লাইন ( #!/usr/bin/python
বা #!/usr/bin/env python
) থাকলে কী হবে ? ঠিক আছে, যেহেতু #
পাইথনের একটি মন্তব্য লাইন তাই পাইথন দোভাষী কেবল এটিকে উপেক্ষা করবেন। ইউনিক্স / লিনাক্স ওয়ার্ল্ডে ব্যবহৃত বেশিরভাগ স্ক্রিপ্টিং ভাষাগুলি #
মন্তব্য লাইনগুলি শুরু করার জন্য এটি এক কারণ ।
সুতরাং এটি উইন্ডোজের #!
লাইনটির "দরকার নেই" বলতে কিছুটা বিভ্রান্তিকর ; উইন্ডোজ না দেখতে#!
লাইন, এবং আসলে ফাইল এক্সটেনশন উপর নির্ভর কি করতে এটা বলতে। এর কয়েকটি অসুবিধা রয়েছে:
.py
।.py
ফাইল-টাইপের জন্য ডিফল্ট প্রবর্তন আচরণটি পরিবর্তন করেন , উইন্ডোজ আর পাইথনের সাহায্যে স্বয়ংক্রিয়ভাবে সেই স্ক্রিপ্টগুলি চালিত করতে পারে না। নোট করুন যে এটি অজান্তেই করা যেতে পারে।এখন, ইউনিক্স / লিনাক্স স্ক্রিপ্টগুলি কীভাবে চালু করে তা দেখুন:
প্রথমে লক্ষ্য করার বিষয়টি হ'ল ইউনিক্স / লিনাক্স, উইন্ডোজের বিপরীতে, পাইথন স্ক্রিপ্টগুলি কোনও নির্দিষ্ট প্রোগ্রাম ব্যবহার করে, অন্তত ধারণামূলকভাবে "খোলার" চেষ্টা করছে না; ওএস জানে যে স্ক্রিপ্টটি এমন কিছু যা "এক্সিকিউট বিট" (যা এই উত্তরের ক্ষেত্রের বাইরে) নামে পরিচিত বলেই কার্যকর করা যায়। সুতরাং, যদি আপনি দুর্ঘটনাকৃতির #!/usr/bin/pthon
পরিবর্তে টাইপ করেন তবে আপনি #!/usr/bin/python
একটি ত্রুটি বার্তা পাবেন যাতে এই পাঠ্যটি অন্তর্ভুক্ত রয়েছে:
/usr/bin/pthon: bad interpreter: No such file or directory.
"দোভাষী" শব্দটি আমাদেরকে শেবাং লাইনের ভূমিকা সম্পর্কে একটি ধারণা দেয় (যদিও প্রযুক্তিগতভাবে নির্দিষ্ট প্রোগ্রামটি অনুবাদক, যেমন cat
বা কোনও পাঠ্য সম্পাদক ছাড়া অন্য কিছু হতে পারে )। আপনি যখন কোনও ফাইল কার্যকর করার চেষ্টা করেন, যা ঘটেছিল তা এখানে:
#!
, তবে লোডার শেবাং লাইনের অবশিষ্ট অংশটি (শেবাং নিজেই বাদে) ফাইলটির সামগ্রীকে স্ক্রিপ্ট হিসাবে চালানোর জন্য একটি দোভাষী চালু করার আদেশ হিসাবে ব্যাখ্যা করে।এর বেশ কয়েকটি সুবিধা রয়েছে:
মনে রাখবেন, পরিশেষে, যে ইউনিক্স / লিনাক্স নেই না প্রয়োজন অর্ডার পাইথন স্ক্রিপ্ট চালানোর জন্য কুঁড়েঘর লাইন। মনে রাখবেন যে সমস্ত শেবাং লাইনটি আসলে প্রোগ্রাম লোডারকে একজন দোভাষী বেছে নিতে দেয় । তবে উইন্ডোজ যেমন ঠিক তেমনভাবে করা যায়:
python <myscript>
.py2
এবং .py3
পাইথন 2 / পাইথন 3 স্ক্রিপ্টের জন্য এক্সটেনশান নেই। সুতরাং লিনাক্স (+ x বিট) এবং উইন্ডোজ (ফাইল এক্সটেনশন) উভয়েরই ফাইল সিস্টেমে মেটাডেটা দরকার। মূল পার্থক্য হ'ল + এক্স বিট আরও সহজে ট্রানজিটে হারিয়ে যায়। এটি অগত্যা একটি খারাপ দিক নয়।
/usr/bin/i686/python
এবং /usr/bin/amd64/python
? পুরোপুরি যুক্তিসঙ্গত, তবে এটি পাইথন স্ক্রিপ্টগুলিকে ভেঙে দেয় যার একটি হার্ডকোড অনুমান রয়েছে /usr/bin/python
। দোভাষীর পছন্দ স্ক্রিপ্ট লেখকের পছন্দ নয় বরং স্ক্রিপ্ট ব্যবহারকারীর পছন্দ, স্ক্রিপ্ট লেখক কেবল ভাষা (উপভাষা) চয়ন করতে পারেন।
/usr/bin/env
এনভি-সেটআপ স্ক্রিপ্টগুলির সাথে এটিই। এর উইন্ডোজ সংস্করণটি কী? regedit
আপনি .py
যে ইন্টারপ্রেটারটি চান তা নিশ্চিত করার জন্য কোনও ফাইল চালু করার ঠিক আগে স্ক্রিপ্ট চালাচ্ছেন ?
আপনি যে লাইনটি ইঙ্গিত করেছেন সেটিকে ফাইল / স্ক্রিপ্ট সরাসরি চালানোর সময় কম্পিউটারকে কী প্রোগ্রাম / দোভাষী ব্যবহার করতে হবে এবং স্ক্রিপ্টটি চলার সময় সেই প্রোগ্রামটিতে পাস হওয়া উচিত এমন কোনও যুক্তি ব্যবহার করতে ব্যবহৃত হয়। এটি পাইথনের প্রয়োজনীয়তা নয়, লিনাক্স কার্নেল / সিস্টেমের প্রয়োজন যদি আপনি সরাসরি স্ক্রিপ্টটি চালানোর ইচ্ছা করেন (এবং এটি নীচের বাক্য গঠন দ্বারা পাইথনকে না দিয়ে যান)।
এটি কার্যকর করার প্রয়োজন হয় না python script.py
বা অনুরূপ। এটি কেবল তখনই প্রয়োজন যখন আপনি স্ক্রিপ্ট / ফাইলটি সরাসরি চালানোর ইচ্ছা করেন, দোভাষীকে ব্যবহারের জন্য সরবরাহ না করে (যেমন python
)।
বাশ স্ক্রিপ্টের জন্য এটির মতো কিছু থাকবে:
#!/bin/bash [optional Bash arguments]
# Bash script code here
...
exit 0;
এটি সিস্টেমে ইঙ্গিত দেয় যে, এটি সঞ্চালনের পরে এটি চালানো উচিত /bin/bash
যা সিস্টেমে শেল / শেল স্ক্রিপ্ট ভাষাগুলির মধ্যে একটি।
পাইথন কোডের জন্য, যদিও এখানে, আপনি পাইথনের মাধ্যমে এক্সিকিউটেবল ফাইলটি চালানোতে চাইছেন, তাই আপনি এটি ব্যাখ্যা করতে চান যে কোন দোভাষী আপনি এটি চালাতে চান।
#!/usr/bin/python [optional Python arguments]
# Python code here
...
exit()
এটি বাশের মতো এটিও ইঙ্গিত করে যে /usr/bin/python
এটি ব্যবহার করা উচিত (এটি সম্ভবত পৃথক সিস্টেমের কনফিগারেশনের উপর নির্ভর করে পাইথন 2 বা পাইথন 3)।
এই ভাবে, আপনি চালাতে পারেন ./filename.py
বা ./executable
বা ./scripttorun
সরাসরি।
শুরুতে এই লাইনটি ছাড়াই এবং আপনি ধরে নিয়েছেন যে আপনি ফাইল / স্ক্রিপ্টটি নির্বাহযোগ্য হতে সেট করেছেন এবং ধরে নিচ্ছেন যে আপনি পাইথন স্ক্রিপ্ট নিয়ে কাজ করছেন, আপনার python filename.py
যদি #!/usr/bin/python
রেখাটি না থাকে তবে আপনাকে চালাতে বা অনুরূপ হতে হবে । (বাশ স্ক্রিপ্টের bash script.sh
জন্য আপনাকে অন্য স্ক্রিপ্ট / ভাষার জন্য যেমন পার্ল, রুবি ইত্যাদি করতে হবে)
সিন্ট্যাক্সের উপরের অংশটি হাইলাইট করা প্রতিটি বিভাগে ভাষা-নির্দিষ্ট, যদিও এটি আসলে কোনও ব্যাপার নয়।
#!/bin/bash -x
, #!/usr/bin/perl -lan
ইত্যাদি)।
/usr/bin/env python
সঠিক পাইথনটি ব্যবহার করার জন্য (যখন) ব্যবহার করা হয়েছিল।
env
তবে সমস্যাটি মনে হচ্ছে আর্গুমেন্টের সংখ্যা নয় : #!/usr/bin/perl -l -a -n
তিনটি যুক্তি রয়েছে তবে এটি কার্যকর works যদিও আবার, আমি সঠিক সমস্যাটি আঁকতে পারছি না।
./
। অন্য কথায় কেবল python filename.py
বা ঠিকঠাক bash script.sh
কাজ করবে। অন্তর্ভুক্ত করার একমাত্র কারণ ./
হ'ল একটি কমান্ডের নাম, যখন আপনি শেলটি অনুসন্ধান না করতে বলতে চান $PATH
(যা সম্ভবত বর্তমান ডিরেক্টরিতে ফাইলগুলি খুঁজে পাবে না) তবে আপনি যেমনটি নির্দিষ্ট করেছেন সেভাবেই চলুন। তবে এটি কমান্ড আর্গুমেন্টের ক্ষেত্রে প্রযোজ্য নয়।
env
কার্নেল থেকে বাকী আর্গুমেন্ট গ্রহণ করবে তা হতে পারে । এগুলি সমস্তই একটি বৃহত যুক্তি হিসাবে অনুমান করা যেতে পারে যেখানে কোনও বিভাজন-দ্বারা-স্থান সঞ্চালিত হয়নি।
লাইন:
#!/usr/bin/python
যাকে 'শেবাং' বলা হয় এবং এটি দোভাষী বাইনারি যাওয়ার পথ নির্দেশ করে যা ফাইলের অন্যান্য কমান্ডগুলির ব্যাখ্যা করতে ব্যবহৃত হবে। এটি সাধারণত কোনও স্ক্রিপ্টের প্রথম লাইন হয়।
সুতরাং লাইনটি #!/usr/bin/python
নির্দেশ করে যে ফাইলটির সামগ্রীটি python
বাইনারি দ্বারা অবস্থিত দ্বারা ব্যাখ্যা করা হবে /usr/bin/python
।
নোট করুন যে শেবাং লাইনটি কার্নেল দ্বারা বিশ্লেষণ করা হয়েছে এবং তারপরে স্ক্রিপ্টটি শেষ পর্যন্ত আর্গুমেন্ট হিসাবে ডাকা হবে:
python script_name
একইভাবে ক্ষেত্রে #!/bin/bash
:
bash script_name
shebang
। শব্দটি "হ্যাশ" এবং "ব্যাং" থেকে তৈরি হওয়ায় আপনার বানানটি খুব পরিষ্কার নয়, যেহেতু দেখে মনে হচ্ছে এটি "সে" এবং "ব্যাং" এর সংমিশ্রণ রয়েছে ।
hashbang
( #
= "হ্যাশ") বা shebang
( #
= "তীক্ষ্ণ") বলতে পারেন #
। তবে, shebang
প্রকৃতপক্ষে এটি আরও সাধারণ। @ কাইলস্ট্র্যান্ড
প্রযুক্তিগতভাবে, এটির প্রয়োজন হয় না। এটির জন্য পরিবেশের জন্য একটি পথ প্রয়োজন যেখানে আপনার স্ক্রিপ্টটি কার্যকর করে। আপনার ভবিষ্যতের স্ক্রিপ্টগুলি তখন / ইউএসআর / বিন / এনভিভ অন্তর্ভুক্ত করা ভাল, পাইথন উল্লেখ করুন। অজগরটি যেখানে ইনস্টল করা হয়েছে তা বিবেচনা করেই আপনার স্ক্রিপ্টটি অজগর পরিবেশে চালিত হয়। আপনি এটি সামঞ্জস্যের কারণে করতে চাইছেন, আপনি নিশ্চিত হতে পারবেন না যে আপনি নিজের কোডটি পরবর্তী ব্যক্তির সাথে usr / bin / python এ পাইথন ইনস্টল করবেন বা তাদের সিস্টেম ফাইলগুলিতে অনুমতি থাকবে।
স্ট্যাক ওভারফ্লো থেকে এখানে একটি অনুরূপ প্রশ্নোত্তর ।
আপনার স্ক্রিপ্টে যা দেখতে দেখতে এটি হ'ল:
#!/usr/bin/env python
পাইথন 3 কীভাবে নির্দিষ্ট করা যায় তার জন্য আমি কিছুটা উদ্বেগও দেখছি। কিভাবে করতে হবে এখানে আছে:
#!/usr/bin/env python3
লিনাক্সে পাইথনকে #!
(শেবাং) লাইন লাগতে পারে এবং নাও পারে । এটি পাইথন ইন্টারেক্টিভ মোডে বা পাইথন স্ক্রিপ্টে কোডগুলি চালনা করে কীভাবে পাইথন কোডগুলি পরিচালনা করা হয় তার উপর নির্ভর করে।
পাইথন ইন্টারেক্টিভ মোড ব্যবহারকারীকে পাইথন কোডগুলি সরাসরি টাইপ এবং চালানোর অনুমতি দেয়, যার জন্য শেবাং লাইনের প্রয়োজন হয় না। ইন্টারেক্টিভ মোডটি চালাতে, একটি টার্মিনাল খুলুন এবং python
পাইথন ২ এক্স এর python3
জন্য বা পাইথন ৩. এক্স এর জন্য টাইপ করুন।
$ python
Python 2.7.6 (default, Jun 22 2015, 18:00:18)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
$ python3
Python 3.4.3 (default, Oct 14 2015, 20:33:09)
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
পাইথন স্ক্রিপ্টটি ব্যবহারকারীকে একটি সরল পাঠ্য ফাইলে পাইথন কোডগুলি লিখতে এবং সংরক্ষণ করতে দেয়, তারপরে কোডগুলি পরে চালানো যায়। এটির জন্য শেবাং লাইন প্রয়োজন হতে পারে বা নাও পারে। যাইহোক, লিনাক্সে পাইথন স্ক্রিপ্ট ব্যবহারের জন্য যখন শেবাং লাইন প্রয়োজন হয় তার দুটি জানা কারণ রয়েছে।
এক্সিকিউটেবল স্ক্রিপ্টে পাইথন কোডগুলি চালনা করা অর্থাৎ কোডগুলি কীভাবে চালানো উচিত এবং কোন দোভাষী ব্যবহার করে তা নির্ধারণ করে;
পাইথনের নির্দিষ্ট সংস্করণ সম্পর্কিত অর্থাত পাইথন কোডগুলি চালানো অর্থাৎ রান কোডগুলি যা পাইথন ২ এক্স বা পাইথন ৩. এক্স এর সাথে সামঞ্জস্যপূর্ণ
পাইথন স্ক্রিপ্টগুলির সাথে অনুশীলন করুন
নীচে ফাইলগুলির তালিকা এবং বিষয়বস্তু রয়েছে যা আমি #!
(শেবাং) লাইনটি প্রয়োজনীয় বা প্রয়োজনীয় নয় এমন কেস দেখাতে ব্যবহার করেছি ।
$ ls -ln *.py
-rw-rw-r-- 1 1000 1000 94 Dec 14 18:37 hello1.py
-rwxrwxr-x 1 1000 1000 116 Dec 14 18:37 hello2e.py
-rw-rw-r-- 1 1000 1000 116 Dec 14 18:37 hello2.py
-rwxrwxr-x 1 1000 1000 117 Dec 14 18:37 hello3e.py
-rwxrwxr-x 1 1000 1000 120 Dec 14 18:37 hello3m.py
-rw-rw-r-- 1 1000 1000 117 Dec 14 18:37 hello3.py
$ file *.py
hello1.py: ASCII text
hello2e.py: Python script, ASCII text executable
hello2.py: Python script, ASCII text executable
hello3e.py: Python script, ASCII text executable
hello3m.py: Python script, UTF-8 Unicode (with BOM) text executable
hello3.py: Python script, ASCII text executable
hello1.py
শুধুমাত্র উত্স কোড রয়েছে।
import sys
sys.stdout.write("Hello from Python %s\n" % (sys.version,))
print("Hello, World!")
hello2.py
উত্স কোড এবং শেবাং লাইন রয়েছে।
#!/usr/bin/env python
import sys
sys.stdout.write("Hello from Python %s\n" % (sys.version,))
print("Hello, World!")
hello2e.py
hello2.py
এক্সিকিউটেবল হিসাবে একই এবং রয়েছে ।
hello3.py
hello2.py
প্রথম লাইনের নাম পরিবর্তন করে পাইথন 3 এর সাথে চালানোর জন্য অভিযোজিত ব্যতীত একই থাকে #!/usr/bin/env python3
।
hello3e.py
hello3.py
এক্সিকিউটেবল হিসাবে একই এবং রয়েছে ।
hello3m.py
পাঠ্য সম্পাদক যেমন মাউসপ্যাডে বিকল্প হিসাবে hello3.py
সংরক্ষণ করা ব্যতীত একই এবং সম্পাদনযোগ্য হিসাবে তৈরি করা হয় Write Unicode BOM
।
এই বিন্দুর বাইরে, ব্যবহারকারীকে পাইথন স্ক্রিপ্টগুলি চালনার জন্য দুটি পদ্ধতি উপস্থাপন করা হবে। উভয় পদ্ধতি নীচে হিসাবে প্রদর্শিত হয়েছে।
পদ্ধতি 1: পাইথন প্রোগ্রাম সহ রান করুন
পাইথন 2 এবং পাইথন 3 দিয়ে সোর্স কোড চালানোর সময় নীচে কমান্ডগুলি এবং আউটপুট দেওয়া হয়।
$ python hello1.py
Hello from Python 2.7.6 (default, Jun 22 2015, 18:00:18)
[GCC 4.8.2]
Hello, World!
$ python3 hello1.py
Hello from Python 3.4.3 (default, Oct 14 2015, 20:33:09)
[GCC 4.8.4]
Hello, World!
পাইথনের উভয় সংস্করণই স্ক্রিপ্টটি সফলভাবে চালাতে সক্ষম হয়েছিল। সুতরাং পাইথন স্ক্রিপ্টটি বা কমান্ডের মাধ্যমে চালানোর সময় শেবাং লাইন প্রয়োজন হয় না ।python
python3
পদ্ধতি 2: পাইথন স্ক্রিপ্ট হিসাবে চালান
শেবাং লাইনের সাথে সোর্স কোড চলাকালীন নীচে কমান্ডগুলি এবং আউটপুট দেওয়া হয়, যা অ-এক্সিকিউটেবল এবং এক্সিকিউটেবল কেসিসহ পাইথন 2 এবং পাইথন 3 এর সাথে মানিয়ে যায়।
$ ./hello1.py
bash: ./hello1.py: Permission denied
$ ./hello2.py
bash: ./hello2.py: Permission denied
$ ./hello3.py
bash: ./hello3.py: Permission denied
$ ./hello2e.py
Hello from Python 2.7.6 (default, Jun 22 2015, 18:00:18)
[GCC 4.8.2]
Hello, World!
$ ./hello3e.py
Hello from Python 3.4.3 (default, Oct 14 2015, 20:33:09)
[GCC 4.8.4]
Hello, World!
প্রথম তিনটি স্ক্রিপ্টগুলি ব্যর্থ হয়েছে কারণ শেবাং লাইন থাকুক বা না থাকুক এই স্ক্রিপ্টগুলি কার্যকর করা যায় না (সমর্থন প্রমাণের জন্য, নীচে অতিরিক্ত উদাহরণ দেখুন)। শেষ দুটি স্ক্রিপ্টে শেবাং লাইন রয়েছে এবং তা সম্পাদনযোগ্য।
স্পষ্টতই, একটি স্ক্রিপ্ট যা সম্পাদনযোগ্য হয়ে উঠেছে তা শেবাং লাইন ছাড়া মূলত অকেজো। সুতরাং, শিবাং লাইন প্রয়োজন এবং এক্সিকিউটেবল স্ক্রিপ্টে পাইথন কোডগুলি চলাকালীন স্ক্রিপ্টটি কার্যকর করা উচিত।
যখন শেবাং কাজ করে না
আমার প্রস্তুত এবং পরীক্ষিত উদাহরণে, hello3m.py
এক্সিকিউটেবল স্ক্রিপ্ট হিসাবে চালানো ব্যর্থ হয়েছে এবং ত্রুটি ফিরে পেয়েছে।
$ ./hello3m.py
./hello3m.py: line 1: #!/usr/bin/env: No such file or directory
এটি একটি পরিচিত সীমাবদ্ধতা যা শেবাং কাজ করে না বা অবৈধ হয়ে যায়। যখন কোনও ফাইল ইউনিকোড বিওএম (বাইট অর্ডার মার্ক) হিসাবে সংরক্ষণ করা হয়, তখন এটি কার্যকরভাবে কার্যকর পাইথন স্ক্রিপ্ট হিসাবে চালাতে ব্যর্থ হবে।
অতিরিক্ত উদাহরণ
এই অতিরিক্ত উদাহরণটি কেবল সমর্থন প্রমাণ হিসাবে বিবেচিত হবে। ব্যবহারকারীর এই উদাহরণটি চালানো এড়ানো উচিত, যদিও ফলাফলটি নিরীহ।
আমি আর একটি ফাইল নামক ফাইল তৈরি করেছি hello1e.py
যা এতে একই রকম hello1.py
এবং সম্পাদনযোগ্য হিসাবে তৈরি made এই স্ক্রিপ্টটি চালানো একটি সিনট্যাক্স ত্রুটি ফিরে পেয়েছে।
$ ./hello1e.py
./hello1e.py: line 2: syntax error near unexpected token `"Hello from Python %s\n"'
./hello1e.py: line 2: `sys.stdout.write("Hello from Python %s\n" % (sys.version,))'
এই স্ক্রিপ্টটি চালানোর সময়, প্রথমে, মাউস কার্সারটি প্লাস-চিহ্নে পরিবর্তিত হবে এবং উপস্থিতি হিসাবে কিছুই করবে না। আমি ডেস্কটপ বা টার্মিনাল উইন্ডোতে ক্লিক না করা পর্যন্ত সিনট্যাক্স ত্রুটিটি প্রদর্শিত হবে না। তারপরে, এই স্ক্রিপ্টটি স্ক্রিপ্টের sys
মতো একই ডিরেক্টরিতে একটি ফাইল তৈরি করবে ।
$ file sys
sys: PostScript document text conforming DSC level 3.0, Level 1
sys
ফাইল, পোস্টস্ক্রিপ্ট ফাইল হিসাবে চিহ্নিত করা হয়েছে ফাইল এক্সটেনশন ছাড়াই। এই ফাইলটি ডকুমেন্ট ভিউয়ারে খোলা যেতে পারে অর্থাৎ এভান্স, এবং ফাইলটিতে আসলে আমি উইন্ডোটির স্ক্রিনশট ছিল যা আমি আগে ক্লিক করেছি। আমার অভিজ্ঞতায় ফাইলটি কয়েকটি মেগাবাইটের চেয়ে বড় হতে পারে।
আবার, শেবাং লাইন প্রয়োজনীয় এবং পাইথন স্ক্রিপ্টকে এক্সিকিউটেবল স্ক্রিপ্ট হিসাবে চালনার সময় স্ক্রিপ্টটি সম্পাদনযোগ্য হতে হবে। অন্যথায়, স্ক্রিপ্টটি উপরে বর্ণিত হিসাবে দুর্ব্যবহার করবে।
অতিরিক্ত নোট
"এক্সিকিউটেবল তৈরি" বা "এক্সিকিউটেবল হতে হবে" শব্দটি স্ক্রিপ্টটি চালানোর অনুমতিকে বোঝায়। এটি chmod +x FILENAME
টার্মিনালে কমান্ড চালিয়ে বা ফাইল পরিচালকের মধ্যে "এই ফাইলটিকে প্রোগ্রাম হিসাবে চালানোর অনুমতি দিন" বিকল্পটি বা প্রোপার্টি উইন্ডোতে অনুরূপ কিছু পরীক্ষা করে is
যদিও অন্যান্য বিদ্যমান উত্তরগুলি প্রায় সমস্ত কিছুর মুখোমুখি হয়েছিল, তবে এই উত্তরটি বিষয়টি ব্যাখ্যা করার জন্য ব্যবহারিক উদাহরণ ব্যবহার করে বিভিন্ন পদ্ধতির গ্রহণ করেছে। কোড বাক্য গঠনটি যত্ন সহকারে রচনা করা হয়েছে, উদাহরণস্বরূপ পাইথন 2 বা পাইথন 3 এর সাথে চালানো যেতে পারে, যেমনটি।
পাইথন কোডগুলি উইন্ডোজে পাইথন ব্যবহার এবং ইউনিক্স প্ল্যাটফর্মে পাইথন ব্যবহার করে সর্বব্যাপী অতিরিক্ত এক-লাইন কোড সহ "হ্যালো, ওয়ার্ল্ড!" কার্যক্রম.
সমস্ত কোড এবং কমান্ডগুলি সম্পূর্ণরূপে পরীক্ষা করা হয়েছে এবং জুবুন্টু 14.04 সিস্টেমে কাজ করে, যা পাইথন ২.7 এবং পাইথন ৩.৪ ডিফল্টরূপে ইনস্টলড ছিল।
এর অর্থ হ'ল যখন সেই ফাইলটি কার্যকর করা হয় তখন আপনার কম্পিউটার প্রোগ্রামের সাথে এটি চালিত করতে জানে /usr/bin/python
, আপনি এটি অন্য ভাষা থেকে আলাদা করে বলবেন যেমন বাশ আপনি যেখানে করবেন #!/bin/bash
। এটি কেবল যাতে আপনি চালাতে পারেন:
./[file-to-execute]
এবং এটি নিজেই জানবে যে কোন ফাইলটি দিয়ে এটি সম্পাদন করা উচিত, তার চেয়ে আপনি নিজের মতো কোনও নির্দিষ্টকরণের চেয়ে:
python ./[file-to-execute].py
#!
অংশ সাধারণত একটি হিসাবে refereed হয় কুঁড়েঘর বা কড়্কড়্ শব্দ ঠুং ।
যদি আপনি পাইথনের বেশ কয়েকটি সংস্করণ ইনস্টল করেন /usr/bin/env
তবে নিশ্চিত করুন যে ব্যবহৃত দোভাষীটি আপনার পরিবেশের প্রথমটি $PATH
। বিকল্পটি হ'ল হার্ডকোডের মতো কিছু হবে #!/usr/bin/python
;
ইউনিক্সে, একটি এক্সিকিউটেবল ফাইল যার অর্থ ব্যাখ্যা করা উচিত #!
তা প্রথম লাইনের শুরুতে দোভাষী ব্যবহার করার পরে, এবং দোভাষী দ্বারা অনুসরণ করা (এবং এটির জন্য প্রয়োজনীয় কোনও পতাকা) ব্যবহার করে কী দোভাষী ব্যবহার করতে হবে তা নির্দেশ করতে পারে।
এই নিয়মটি কেবল ইউএনআইএক্স ভিত্তিক সিস্টেমের জন্য প্রযোজ্য।
ওএসের মতো লিনাক্সের জন্য সহায়ক যেখানে পাইথন ২.x এখনও স্ট্যান্ডার্ড, তবে বেশিরভাগ লোকেরা 3.x ডাউনলোডও করে।
2.x ডিফল্ট দ্বারা চালিত হবে। সুতরাং আমার x.x কোডটি আমি #! / Usr / bin / env পাইথন 3 দিয়ে উপসর্গ করি যাতে 3.x কোড চালায়। আমি এমনকি যদি বিটা রিলিজ বা কেবল সামান্য পুরানো সংস্করণগুলি বেছে নেওয়া পছন্দ করি তবে আমি নাবালিক পুনর্বিবেচনার (পাইথন 3.xyz) নির্দিষ্ট করে দিতে পারি।
.
কোন ধরণের ফাইল তা নির্ধারণ করতে উইন্ডোজ ফাইলের প্রসারের (পরে অংশ ) নির্ভর করে । এমনকি উইন্ডোজ এ থেকে সরে যাচ্ছে: মাইক্রোসফ্ট ওয়ার্ড ফাইলের প্রথম কয়েকটি লাইন পরীক্ষা করে দেখুন এবং এটি বর্ণিত হবে যে এটি আসলে মাইক্রোসফ্ট ওয়ার্ড ফাইল।