पायथन - कमांड लाइन मॉड्यूल रन के दौरान PYTHONPATH जोड़ें


86

मैं दौड़ना चहता हूँ:

python somescript.py somecommand

लेकिन, जब मैं इसे चलाता हूं तो मुझे PYTHONPATHएक निश्चित निर्देशिका को शामिल करने की आवश्यकता होती है। मैं इसे केवल अपने पर्यावरण चर में नहीं जोड़ सकता क्योंकि निर्देशिका मैं जो परियोजना मैं चला रहा हूं उसके आधार पर परिवर्तन जोड़ना चाहता हूं। क्या PYTHONPATHस्क्रिप्ट चलाते समय परिवर्तन करने का कोई तरीका है ? नोट: मेरे पास एक PYTHONPATHचर भी नहीं है , इसलिए मुझे इस स्क्रिप्ट को चलाने के दौरान इसे ओवरराइड करने के बारे में चिंता करने की आवश्यकता नहीं है।

जवाबों:


148

मैक / लिनक्स के लिए;

PYTHONPATH=/foo/bar/baz python somescript.py somecommand

विंडोज के लिए, एक आवरण सेटअप करें pythonpath.bat;

@ECHO OFF
setlocal
set PYTHONPATH=%1
python %2 %3
endlocal

और कॉल pythonpath.batस्क्रिप्ट फ़ाइल की तरह;

pythonpath.bat /foo/bar/baz somescript.py somecommand

@ İsmail - धन्यवाद हालाँकि, मैं अपने कमांड प्रॉम्प्ट से स्क्रिप्ट चलाते समय ऐसा कैसे कर सकता हूं? मैं पायथन नहीं चला रहा हूं, सामान आयात कर रहा हूं, और इसे मैन्युअल रूप से चला रहा हूं।
ओरोकुसाकी 20

मैक / लिनक्स पर आप क्या करना होगाPYTHONPATH=/foo/bar python somescript.py somecommand
इस्माइल

मैंने कोशिश की python -c"import sys;sys.path.append('/my/dir')"और फिर python myscript.py mycommand, लेकिन यह स्पष्ट रूप से अगले के साथ पहले दुभाषिया सत्र से रास्ता साझा नहीं करता है। आह, अभी आपकी अगली टिप्पणी देखी, अभी कोशिश कर रहा हूँ ... WinXP पर काम नहीं किया।
ओरोकुसाकी 20

1
unsetविंडोज पर कोई पर्यावरण चर कमांड नहीं है। इसके बजाय setlocalप्रारंभिक के बाद जोड़ें echo offऔर फिर एक अंतर्निहित तब endlocalहोगा जब .bat स्क्रिप्ट समाप्त हो जाती है (और PYTHONPATHइसके पिछले मूल्य पर पुनर्स्थापित किया जाएगा)।
मार्टिउ

5
विंडोज पर यदि आप मौजूदा पथ को जोड़ना चाहते हैं PYTHONPATH, तो आप उपयोग करना चाह सकते हैं set PYTHONPATH=%PYTHONPATH%;%1
मार्टिउ

49
 import sys
 sys.path.append('your certain directory')

मूल रूप से sys.path अजगर मॉड्यूल के लिए सभी खोज पथों के साथ एक सूची है। इसकी व्याख्या दुभाषिया द्वारा की जाती है। PYTHONPATH की सामग्री स्वचालित रूप से उस सूची के अंत में जोड़ दी जाती है।


10
या sys.path.insert (0, '/ कुछ / निर्देशिका') को अपने पथ के सामने रखें। यह आपकी सामग्री को अन्य सामान को ओवरराइड करने की अनुमति देता है जो पहले से ही अजगरथ पर हो सकता है।
sienkiew

मैंने इस उत्तर का इस्तेमाल पीयदेव-ग्रहण आईडीई के बाहर अनायास चलाने के लिए किया।
लाल

sys.path.append(r'D:\PyCharmProjects\cheese_shoppe')विंडोज में उदाहरण।
बॉब स्टीन

9

यदि आप POSIX- संगत शेल से कमांड चला रहे हैं, जैसे bash, आप पर्यावरण चर को इस तरह सेट कर सकते हैं:

PYTHONPATH="/path/to" python somescript.py somecommand

यदि यह सब एक लाइन पर है, तो PYTHONPATH पर्यावरण मूल्य केवल उस एक कमांड पर लागू होता है।

$ echo $PYTHONPATH

$ python -c 'import sys;print("/tmp/pydir" in sys.path)'
False
$ PYTHONPATH=/tmp/pydir python -c 'import sys;print("/tmp/pydir" in sys.path)'
True
$ echo $PYTHONPATH

बस मैं जो चाह रहा था, बहुत बहुत धन्यवाद। किसी कारण से python -c "import sys; sys.path.insert(0,'my/path'); import mymodule"काम नहीं चल रहा था।
ल्यूक डेविस

0

आप अपनी स्क्रिप्ट के अंदर फ़ंक्शन को निष्पादित करने के लिए यह कोशिश कर सकते हैं

python -c "import sys; sys.path.append('/your/script/path'); import yourscript; yourscript.yourfunction()"

-1

यह खिड़कियों के लिए है:

उदाहरण के लिए, मेरे डेस्कटॉप पर "mygrapher" नाम का एक फ़ोल्डर है। अंदर, वहाँ "गणना" और "रेखांकन" नामक फ़ोल्डर हैं जिसमें पायथन फाइलें हैं जो मेरी मुख्य फ़ाइल "grapherMain.py" की जरूरत है। इसके अलावा, "grapherMain.py" को "graphing" में संग्रहीत किया जाता है। फ़ाइलों को स्थानांतरित किए बिना सब कुछ चलाने के लिए, मैं एक बैच स्क्रिप्ट बना सकता हूं। चलो इस बैच फ़ाइल को "rungraph.bat" कहते हैं।

@ECHO OFF
setlocal
set PYTHONPATH=%cd%\grapher;%cd%\calculation
python %cd%\grapher\grapherMain.py
endlocal

यह स्क्रिप्ट "माइग्राफर" में स्थित है। चीजों को चलाने के लिए, मैं अपने कमांड प्रॉम्प्ट में जाऊंगा, फिर:

>cd Desktop\mygrapher (this navigates into the "mygrapher" folder)
>rungraph.bat (this executes the batch file)

5
और यह İsmail 'कार्टमैन' डोनमेज़ के उत्तर से कैसे भिन्न है?
एलेक्स ओक्रुस्को जू
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.