উইন্ডোজে পাইথন স্ক্রিপ্টগুলি কীভাবে কার্যকর করা যায়?


92

আমার কাছে একটি সাধারণ স্ক্রিপ্ট রয়েছে ব্লাহ.পি (পাইথন 2 ব্যবহার করে):

import sys
print sys.argv[1]

আমি যদি আমার স্ক্রিপ্টটি এর দ্বারা চালিত করি:

python c:/..../blah.py argument

এটি যুক্তি মুদ্রণ করে তবে আমি যদি স্ক্রিপ্টটি সম্পাদন করি:

blah.py argument

ত্রুটি ঘটে:

সূচিপত্র ...

সুতরাং যুক্তিগুলি স্ক্রিপ্টে পাস হয় না।

পাইথনে পাইথন.এক্স.ই. PATH তেও blah.py সহ ফোল্ডার।
পাইথন.এক্সই * .py ফাইলগুলি চালানোর জন্য ডিফল্ট প্রোগ্রাম।

সমস্যাটা কি?


4
কোডের স্নিপেট পোস্ট করা আপনাকে সহায়তা করতে পারে।
jldupont

স্ফটিক বল ছাড়াই মানুষ ইতিমধ্যে একটি সমাধান দিয়েছে =) প্রিন্ট sys.argv [1] এই ত্রুটি তৈরি করে।
টোন

যদি আপনার পাইথনের একাধিক সংস্করণ ইনস্টল করা থাকে তবে আপনার এই স্ট্যাকওভারফ্লো . com/ প্রশ্নগুলি / ১৯৯34675৫/২ প্রয়োজন হতে পারে ।
লাইক

অজগরটিকে ম্যানুয়ালি রেজিস্ট্রি থেকে আমার স্ক্রিপ্ট চালানোর জন্য বলুন: "সি: \ পাইথন 27 \ পাইথন.এক্সই" "সি: \ পাইথন 27 \ tpt.py" "% 1" `

উত্তর:


144

আপনি যখন "পাইথন" টাইপ না করে কোনও স্ক্রিপ্ট সম্পাদন করেন, তখন উইন্ডোজ কীভাবে প্রোগ্রামটি চালায় সে সম্পর্কে আপনার দুটি বিষয় জানা দরকার। প্রথমে উইন্ডোজ এটি কী ধরণের ফাইল মনে করে তা খুঁজে বের করা:

    সি:।> সহযোগী .পি
    .py = পাইথন.ফাইল

এরপরে, আপনাকে জানানো দরকার যে উইন্ডোজ কীভাবে সেই এক্সটেনশনের সাহায্যে জিনিসগুলি কার্যকর করে। এটি "পাইথন.ফাইলে" ফাইল টাইপের সাথে যুক্ত, সুতরাং এই কমান্ডটি এটি কী করবে তা দেখায়:

    সি:।> টাইপ পাইথন.ফায়াল
    পাইথন.ফাইল = "সি: \ পাইথন 26 \ পাইথন.এক্সে" "% 1"% *

সুতরাং আমার মেশিনে, যখন আমি "blah.py foo" টাইপ করব, এটি এই সঠিক আদেশটি কার্যকর করবে, ফলাফলের কোনও পার্থক্য না করে আমি নিজে পুরো জিনিসটি টাইপ করেছি:

    "সি: \ পাইথন 26 \ পাইথন.এক্সে" "ব্লাহ.পি" "ফু oo

যদি আপনি একই জিনিসটি উদ্ধৃতি চিহ্নগুলি সহ টাইপ করেন, তবে আপনি যখন "blah.py foo" টাইপ করবেন তখন আপনি একই রকম ফলাফল পাবেন। এখন আপনি নিজের সমস্যাটি নিজের জন্য বের করার মতো অবস্থানে রয়েছেন।

(বা আপনার প্রশ্নে আরও সহায়ক তথ্য পোস্ট করুন, যেমন আপনি কনসোলে যা দেখছেন তার প্রকৃত কাট-পেস্টের অনুলিপিগুলি Note নোট করুন যে এই ধরণের জিনিসগুলি করে এমন লোকেরা তাদের প্রশ্নে ভোট দেয় এবং তারা খ্যাতি পয়েন্ট এবং আরও বেশি লোক পান তাদের ভাল উত্তর দিয়ে সাহায্য করতে পারে।)

মন্তব্য থেকে আনা:

এমনকি যদি এসোসিয়েট এবং এফটিপি সঠিক তথ্য প্রদর্শন করে তবে এটি ঘটতে পারে যে যুক্তিগুলি বন্ধ করে দেওয়া হয়। এক্ষেত্রে কী সাহায্য করতে পারে তা পাইথনের জন্য সরাসরি সম্পর্কিত রেজিস্ট্রি কীগুলি ঠিক করা। স্থির কর

HKEY_CLASSES_ROOT\Applications\python26.exe\shell\open\command

চাবি:

"C:\Python26\python26.exe" "%1" %*

সম্ভবত, আগে, %*নিখোঁজ ছিল। একইভাবে, সেট

 HKEY_CLASSES_ROOT\py_auto_file\shell\open\command

একই মান। Http://eli.thegreenplace.net/2010/12/14/problem-passing-arguments-to-python-scriptts-on-windows/ দেখুন

python.exe জন্য উদাহরণ রেজিস্ট্রি সেটিং HKEY_CLASSES_ROOT\Applications\python.exe\shell\open\commandরেজিস্ট্রি পাথ পরিবর্তন হওয়ার সম্ভাবনা রয়েছে ব্যবহার করতে পারে python26.exeবা python.exeবা যেটা ইতিমধ্যে রেজিস্ট্রি হয়।

এখানে চিত্র বর্ণনা লিখুন HKEY_CLASSES_ROOT\py_auto_file\shell\open\command


30
এমনকি যদি assocএবং ftypeসঠিক তথ্য প্রদর্শন করে তবে এটি ঘটতে পারে যে যুক্তিগুলি বন্ধ করে দেওয়া হয়। এক্ষেত্রে কী সাহায্য করতে পারে তা পাইথনের জন্য সরাসরি সম্পর্কিত রেজিস্ট্রি কীগুলি ঠিক করা। HKEY_CLASSES_ROOT\Applications\python26.exe\shell\open\commandকীটি সেট করুন : "C:\Python26\python26.exe" "%1" %* সম্ভবত, পূর্বে, %*নিখোঁজ ছিল। একইভাবে, HKEY_CLASSES_ROOT\py_auto_file\shell\open\commandএকই মান সেট করুন । দেখুন eli.thegreenplace.net/2010/12/14/...
parvus

4
@ পারভাস আপনার মন্তব্যটি আমার পক্ষে চূড়ান্ত সমাধান ছিল। এমনকি সমিতিগুলি সঠিকভাবে পড়ার সাথে, এই দুটি কী দুটিই ভুলভাবে সেট করা হয়েছিল।
নাথান কক্স

4
আমি HKEY_CLASSES_ROOT py .py \ ওপেন উইথপ্রোগিডগুলির সাথে ভিজুয়ালস্টুডিও সম্পর্কিত কিছুতে সেট করা নিয়েও সমস্যায় পড়েছি, বিশেষত যখন আমি আমার অ্যাপভিয়ার পরীক্ষায় পাইথন স্ক্রিপ্টগুলি চালানোর চেষ্টা করি। Help.appveyor.com/discussion/problems/… দেখুন ।
জ্যাক ও'কনোর

4
আমি একই সমস্যা আছে। অ্যানাকোন্ডা ডিফল্টরূপে নিখোঁজ% * সহ রেজিস্ট্রি কী যুক্ত করে
প্রসাদ

উইন 10 এ আমি লিখি test.py 123এবং আমি 123মুদ্রিত হয়ে যাই sys.argv[1]। মাইক্রোসফ্ট কি কিছু পরিবর্তন করেছে?
হ্রভোজে টি

22

পাইথন ফাইলগুলি পাইথন.এক্সই হ্যান্ডেল করতে আপনার ডিফল্ট অ্যাপ্লিকেশন করা উচিত।

* .py ফাইলটিতে ডান ক্লিক করুন, "ওপেন করুন" সংলাপটি নির্বাচন করুন। সেখানে "পাইথন.এক্সি" নির্বাচন করুন এবং "এই ফাইলের ধরণের জন্য সর্বদা এই প্রোগ্রামটি ব্যবহার করুন" (এটির মতো কিছু) পরীক্ষা করুন।

তাহলে আপনার পাইথন ফাইলগুলি সর্বদা পাইথন.এক্সই ব্যবহার করে চালানো হবে


16

অতিরিক্ত হিসাবে, আপনি যদি ফাইলের নামের শেষে .py(বা .pyw) টাইপ না করে আপনার অজগর স্ক্রিপ্টগুলি চালাতে সক্ষম হতে চান তবে আপনার পাঠ্য পরিবেশের ভেরিয়েবলের এক্সটেনশনের তালিকায় .PY(বা .PY;.PYW) যুক্ত করতে হবে।

উইন্ডোজ 7 এ:

কম্পিউটার ডান-ক্লিক করুন
প্রোপার্টি বাঁ-ক্লিক
উন্নত সিস্টেম সেটিংস বাঁ-ক্লিক
অ্যাডভান্সড ট্যাব বাঁ-ক্লিক
পরিবেশ ভেরিয়েবল বাঁ-ক্লিক করুন ...
অধীনে "সিস্টেম ভেরিয়েবল" নিচে স্ক্রল পর্যন্ত আপনি দেখতে PATHEXT
বাম-ক্লিক PATHEXT তে এটি হাইলাইট করতে
left- সম্পাদনা ক্লিক করুন ...
"পরিবর্তনশীল মান" সম্পাদনা করুন যাতে এটি এতে থাকে ;.PY (শেষ কীটি শেষ পর্যন্ত
চলে যাবে ) বাম-ক্লিক করুন ওকে
বাম-ক্লিক করুন ওকে
বাম-ক্লিক করুন ওকে

নোট # 1: কমান্ড-প্রম্পট উইন্ডোগুলি ডাব্লু / ও বন্ধ এবং পুনরায় খোলার পরিবর্তন দেখতে পাবে না।

দ্রষ্টব্য # 2: .pyএবং .pywএক্সটেনশনের মধ্যে পার্থক্য হ'ল প্রাক্তন রান করার সময় একটি কমান্ড প্রম্পট খোলে এবং পরবর্তীটি তা দেয় না।

আমার কম্পিউটারে আমি ;.PY;.PYWসর্বশেষ (সর্বনিম্ন-অগ্রাধিকার) এক্সটেনশন হিসাবে যুক্ত করেছি, সুতরাং পাঠ্যক্রমের "পূর্বে" এবং "পরে" মানগুলি ছিল:

আগে: .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC

পরে .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.PYW

এখানে কিছু শিক্ষামূলক নির্দেশ রয়েছে:

C:\>echo %pathext%
.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.PYW

C:\>assoc .py
.py=Python.File

C:\>ftype Python.File
Python.File="C:\Python32\python.exe" "%1" %*

C:\>assoc .pyw
.pyw=Python.NoConFile

C:\>ftype Python.NoConFile
Python.NoConFile="C:\Python32\pythonw.exe" "%1" %*

C:\>type c:\windows\helloworld.py
print("Hello, world!")  # always use a comma for direct address

C:\>helloworld
Hello, world!

C:\>

4

উইন্ডোজে পাইথন স্ক্রিপ্টগুলি কীভাবে কার্যকর করা যায়?

আপনি পাইলাঞ্চার ইনস্টল করতে পারেন । এটি .py, .pyw, .pyc, .pyo ফাইলগুলি চালু করতে এবং একাধিক পাইথন ইনস্টলেশন সমর্থন করে:

T\:> blah.py argument

আপনি যদি পাইপথ এনভায়রনমেন্ট ভেরিয়েবলের .py, .pyw থাকে .py এক্সটেনশন নির্দিষ্ট না করেই আপনার পাইথন স্ক্রিপ্টটি চালাতে পারেন:

T:\> blah argument

এটি #!যদি আপনার একাধিক সংস্করণ ইনস্টল থাকে তবে উইন্ডোজটিতে কাঙ্ক্ষিত পাইথন সংস্করণ নির্বাচন করতে শেবাং ( শিরোনাম লাইন) সমর্থন যোগ করে । আপনি * নিক্স-সামঞ্জস্যপূর্ণ সিনট্যাক্স ব্যবহার করতে পারেন #! /usr/bin/env python

আপনি সর্বশেষে ইনস্টলড পাইথন 3 সংস্করণ ব্যবহার করে চালানোর জন্য স্পষ্টভাবে সংস্করণ নির্দিষ্ট করতে পারেন:

T:\> py -3 blah.py argument

এটি আপনার sys.argvসমস্যাটিকে পার্শ্ব-প্রতিক্রিয়া হিসাবেও ঠিক করা উচিত ।


পাইথন লঞ্চার বিটা স্থিতিতে রয়েছে।
নিকোলাস বারবুলেসকো 6:58


হতে পারে. তবে আমি উইন্ডোজটিতে পাইথন 3 ইনস্টল করতে সফল হই নি । হয়তো আপনি আমাকে এখানে সাহায্য করতে পারেন।
নিকোলাস বারবুলেসকো

4

আমি একই সমস্যার মুখোমুখি হয়েছি তবে উইন্ডোজ ব্যবহারকারীদের (লিনাক্স থেকে আগত) আমার কোডটি প্যাকেজ করার প্রয়োজনের প্রসঙ্গে। আমার প্যাকেজটিতে কমান্ড লাইন অপশন সহ বেশ কয়েকটি স্ক্রিপ্ট রয়েছে।

উইন্ডোজ ব্যবহারকারীদের মেশিনে উপযুক্ত স্থানে ইনস্টল করার জন্য আমার এই স্ক্রিপ্টগুলি দরকার যাতে তারা কমান্ড লাইন থেকে তাদের আবেদন করতে পারে। যেহেতু প্যাকেজটি ব্যবহারকারী-বান্ধব বলে মনে করা হচ্ছে, তাই আমার ব্যবহারকারীদের এই স্ক্রিপ্টগুলি চালনার জন্য তাদের রেজিস্ট্রি পরিবর্তন করতে বলা অসম্ভব।

আমি এমন একটি সমাধান পেয়েছি যা ক্যান্টিনিয়ামের লোকেরা পাইথন স্ক্রিপ্টগুলির জন্য তাদের অ্যানাকোন্ডা প্যাকেজ নিয়ে আসে - উদাহরণস্বরূপ আপনার অ্যানাকোন্ডা / স্ক্রিপ্ট ডিরেক্টরি পরীক্ষা করে দেখুন।

পাইথন স্ক্রিপ্টের testজন্য দুটি ফাইল তৈরি করুন: ক test.batএবং এ test-script.py

test.batনিম্নলিখিত হিসাবে দেখায় ( কল .batফাইলগুলি)Anaconda\Scriptspython.exe একটি আপেক্ষিক পাথ যা আমি আমার কাজের জন্য অভিযোজিত সহ):

@echo off
set PYFILE=%~f0
set PYFILE=%PYFILE:~0,-4%-script.py
"python.exe" "%PYFILE%" %*

test-script.py আপনার আসল পাইথন লিপিটি:

import sys
print sys.argv

আপনি যদি এই দুটি ফাইল আপনার স্থানীয় ডিরেক্টরিতে রেখে যান তবে আপনি পাইথন স্ক্রিপ্টটি এর মাধ্যমে আবেদন করতে পারেন .bat ফাইলটির

test.bat hello world
['C:\\...\\test-scripy.py', 'hello', 'world']

যদি আপনি উভয় ফাইলকে আপনার PATH(যেমন Anaconda\Scripts) অবস্থিত কোনও স্থানে অনুলিপি করেন তবে আপনি এমনকি বাইরে রেখে আপনার স্ক্রিপ্টটি আহ্বান করতে পারেন.bat প্রত্যয়টি

test hello world
['C:\\...Anaconda\\Scripts\\test-scripy.py', 'hello', 'world']

দাবি অস্বীকার: কী চলছে এবং কীভাবে এটি কাজ করে এবং কোনও ব্যাখ্যা প্রশংসা করবে সে সম্পর্কে আমার কোনও ধারণা নেই।


.batপ্রতিটি পাইথন স্ক্রিপ্টের জন্য একটি মোড়ক তৈরি করা আনাড়ি এবং অপ্রয়োজনীয়। আমি এটার সুপারিশ করতাম না।
ট্রিপলি

2

উপর উইন্ডোজ ,

করার ছাড়া টাইপিং "পাইথন" একটি পাইথন মডিউল চালানো ,

-> যেকোন অজগর (*। পাই) ফাইলটিতে রাইট ক্লিক করুন

-> সম্পত্তিটি দিয়ে "পাইথন.এক্সে" সেট করুন

-> "এই ফাইলের ধরণের জন্য সর্বদা এই প্রোগ্রামটি ব্যবহার করুন" পরীক্ষা করুন

-> পরিবর্তনশীল পরিবেশে পাইথন.এক্সির পথ যুক্ত করুন যেমন সংযোজন সি: \ পাইথন 27 থেকে পথের পরিবেশ পরিবর্তনশীল।

করতে টাইপ করা ছাড়াই ".py" এক্সটেনশন একটি পাইথন মডিউল চালান

-> পাঠ্য সিস্টেমের পরিবর্তনশীল সম্পাদনা করুন এবং তালিকায় ".PY" এক্সটেনশন যুক্ত করুন।


1

এখানে একটি অবিশ্বাস্যভাবে দরকারী উত্তর খুঁজে পেয়েছে : কিভাবে সেন্টিমিটারে অজগর বিভিন্ন সংস্করণ চালানো?

আমি উইন্ডোজ ইউটিলিটির জন্য পাইথন লঞ্চারটি ব্যবহার করার পরামর্শ দেব যা কিছুটা আগে পাইথন ৩.৩ এ প্রবেশ করেছিল। পাইথন 2 এবং 3 এর পূর্ববর্তী সংস্করণগুলির সাথে ব্যবহারের জন্য আপনি নিজে এটি সরাসরি লেখকের ওয়েবসাইট থেকে ডাউনলোড এবং ইনস্টল করতে পারেন।

আপনি এটি কীভাবে পান তা নির্বিশেষে, ইনস্টলেশনের পরে এটি সমস্ত স্ট্যান্ডার্ড পাইথন ফাইল এক্সটেনশনগুলির সাথে নিজেকে যুক্ত করবে (যেমন .py, .pyw, .pyc, এবং .pyo ফাইল)। আপনি কেবল কমান্ড-প্রম্পটে কোন সংস্করণটি ব্যবহার করবেন তা স্পষ্টভাবে নিয়ন্ত্রণ করতে পারবেন না, তবে লিনাক্স / ইউনিক্স-ওয় শেবাং #! / Usr / bin / env পাইথনএক্স মন্তব্য যুক্ত করে স্ক্রিপ্ট-বাই-স্ক্রিপ্ট ভিত্তিতেও ব্যবহার করতে পারবেন আপনার পাইথন স্ক্রিপ্টগুলির শুরু।

জেএফ সেবাস্তিয়ানর পরামর্শ অনুসারে, উইন্ডোজে পাইথনের বিভিন্ন সংস্করণ চালু করার জন্য উইন্ডোজের জন্য পাইথন লঞ্চারই সেরা এবং ডিফল্ট পছন্দ। এটি তৃতীয় পক্ষের সরঞ্জাম হিসাবে ব্যবহৃত হত তবে পাইথন ৩.৩ থেকে এটি আনুষ্ঠানিকভাবে সমর্থিত।

৩.৩ সংস্করণে নতুন।

উইন্ডোজের জন্য পাইথন লঞ্চার একটি ইউটিলিটি যা বিভিন্ন পাইথন সংস্করণের অবস্থান এবং সম্পাদনের ক্ষেত্রে সহায়তা করে। এটি স্ক্রিপ্টগুলিকে (বা কমান্ড-লাইন) নির্দিষ্ট পাইথন সংস্করণের জন্য অগ্রাধিকার নির্দেশ করতে সহায়তা করে এবং সেই সংস্করণটি সনাক্ত এবং সম্পাদন করবে।

এটি দুর্দান্ত সরঞ্জাম মাত্র এটি ব্যবহার করুন!


0

আপনি কি কোনও মানচিত্র থেকে পাইথন.এক্সি কার্যকর করতে পারেন? যদি আপনি এটি না করেন, PATH এনভায়রনমেন্টে পাইথন.এক্সএই জন্য উপযুক্ত মান আছে কিনা তা চেক করুন

আপনি কি blah.py. এর চেয়ে একই ডিরেক্টরিতে আছেন? কমান্ড জারি করে এটি পরীক্ষা করুন -> blah.py সম্পাদনা করুন এবং আপনি এই ফাইলটি খুলতে পারেন কিনা তা পরীক্ষা করে দেখুন

সম্পাদনা:

সেক্ষেত্রে আপনি পারবেন না। ( পাইথন আরগের অর্থ হ'ল আপনি পাইথনকে কল করেছেন ex

আপনি আপনার পথের মানচিত্রে ব্যাট ফাইল হাইট লাইন তৈরি করতে পারেন এবং .bat ফাইল চালাতে পারেন

উদাহরণ:
একটি মানচিত্রের মানচিত্রে blah.py.bat ফাইল সম্পাদনা করুন এবং লাইন লাগান

python C:\Somedir\blah.py

আপনি এখন যে কোনও দিক থেকে blah.py চালাতে পারেন, কারণ ব্যাট ফাইলগুলি চালানোর সময় আপনাকে .bat এক্সটেনশন লাগবে না


পথের অজগর এবং ডিরেক্টরি যা PLAH এও blah.py রয়েছে। মূল ধারণাটি হ'ল পাইথন স্ক্রিপ্টটিতে সম্পূর্ণ পথ না লিখে এটি চালানো। তবে এখন আমার পক্ষে যুক্তিগুলি পাস করার ক্ষেত্রে সমস্যা রয়েছে।
ton4eg

4
রালু, অজগর স্ক্রিপ্টটি এভাবে চালনার জন্য আপনার ব্যাচ ফাইলের দরকার নেই। .Py এবং .pyw এক্সিকিউটেবল এক্সটেনশন হিসাবে অন্তর্ভুক্ত করতে পাঠ্য পরিবেশের ভেরিও ব্যবহার করুন। এই ভারটি কারণেই আপনাকে .bat নির্দিষ্ট করতে হবে না।
টড

0

যদি এটি আমি বুঝতে পেরেছিলাম তবে এটি এর মতো:

C:\Users\(username)\AppData\Local\Programs\Python\Python(version)

কপি (মুছুন না) পাইথন.এক্সএই এবং নাম পরিবর্তন করে পাই.এক্সই এবং এক্সিকিউট করুন:

py filename.py

0

কেবল কমান্ডটি চালান:

C:>python .\file_name.py

ধরে নিচ্ছি ফাইলের নাম একই ফোল্ডারের মধ্যে রয়েছে এবং পাইথন ইতিমধ্যে পরিবেশের ভেরিয়েবলগুলিতে যুক্ত করা হয়েছে।

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