2011-01-02 21 views
57

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

उत्तर

91

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

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 
+0

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

+0

मैक/लिनक्स पर आप 'PYTHONPATH =/foo/bar python somescript.py कुछ कमांड' – ismail

+0

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

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

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

+8

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

+0

मैंने इस जवाब का उपयोग pydev-eclipse IDE के बाहर अनजान चलाने के लिए किया था। – LAL

+0

'sys.path.append (r'D: \ PyCharmProjects \ cheese_shoppe ') विंडोज में उदाहरण। –

6

आप एक 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 
+0

बस जो मैं खोज रहा था, बहुत बहुत धन्यवाद। कुछ कारणों से 'पायथन-सी "आयात sys चला रहा है; sys.path.insert (0,' my/path '); आयात Mymodule" 'काम नहीं किया। –

-1

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

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

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

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

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

और यह @ इस्माइल 'कार्टमैन' डोनेमेज़ उत्तर से अलग कैसे है? –

0

आपके पास अपनी स्क्रिप्ट

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