अजगर के अंदर अजगर स्क्रिप्ट चल रहा है


122

क्या अपने पथ को इंगित किए बिना ipython के अंदर से एक पायथन स्क्रिप्ट (मॉड्यूल नहीं) चलाना संभव है? मैंने PYTHONPATH को सेट करने की कोशिश की, लेकिन यह केवल मॉड्यूल के लिए काम करता है। मैं अमल करना चाहूंगा

%run my_script.py

फ़ाइल युक्त निर्देशिका में होने के बिना।


import <module>अनिवार्य रूप exec(<moduleSource>)से जावास्क्रिप्ट या पर्ल के समान है।
वोर्टिको

14
वाक्य रचना% रन abc.py के लिए +1 - कि देखने के लिए कोशिश कर रहा था
सिड क्षत्रिय

1
आप पथ का उपयोग कर सकते हैं:% run ../scripts/my_scripts उदाहरण के लिए
जोस ए।

CLI स्क्रिप्ट के लिए विकसित की गई क्लिक लाइब्रेरी के साथ यह मेरे लिए काम नहीं करता है, मुझे यह मिलता है: IOErrorTraceback (सबसे हालिया कॉल अंतिम) /home/miguelfg/workspace/projects*********/db-preparation.py <मॉड्यूल में > () १२ (० १२ if१ अगर नाम == " मुख्य ": -> १२ (२ मुख्य () १२
12३ १२

जवाबों:


126

"my_script.py" की निर्देशिका से आप बस यह कर सकते हैं:

%run ./my_script.py

सादगी और संक्षिप्तता के लिए सबसे अच्छा जवाब
Evhz

SyntaxError: invalid syntaxयहाँ, पायथन कंसोल पर । डेबियन 9. पर पायथन 3.5.3, हालांकि, आईपीथॉन पर काम करता है।
रोटन

1
@rotton ऐसा इसलिए %runहै क्योंकि एक ipython मैजिक कमांड है, जो Python भाषा का हिस्सा नहीं है।
ह्यूगोमेलोट जूल

28

Ipython में स्क्रिप्ट कैसे चलाएं

import os
filepath='C:\\Users\\User\\FolderWithPythonScript' 
os.chdir(filepath)
%run pyFileInThatFilePath.py

इससे हो जाना चाहिए


16

%runजादू एक पैरामीटर है file_finderयह (देखें निष्पादित करने के लिए फाइल करने के लिए पूरा पथ प्राप्त करने के लिए उपयोग करता है यहाँ ); जैसा कि आप ध्यान दें, यह केवल वर्तमान निर्देशिका में दिखता है, यदि आवश्यक हो तो ".py" को जोड़कर।

ऐसा प्रतीत नहीं होता है कि जादू से किस फ़ाइल खोजक का उपयोग किया जाए, यह निर्दिष्ट करने का एक तरीका है %run, लेकिन आपको अपनी खुद की जादू कमांड को परिभाषित करने से रोकने के लिए कुछ भी नहीं है जो %runएक उपयुक्त फ़ाइल खोजक के साथ कॉल करता है ।

एक बहुत बुरा हैक के रूप में, आप file_finderअपने स्वयं के साथ डिफ़ॉल्ट को ओवरराइड कर सकते हैं :

IPython.core.magics.execution.ExecutionMagics.run.im_func.func_defaults[2] = my_file_finder

ईमानदार होने के लिए, जिस दर पर IPython API बदल रहा है, वह यह है कि आपके अपने जादू को परिभाषित करने के लिए काम करना जारी रखने की संभावना है।


16

अजगर में मॉड्यूल और स्क्रिप्ट के बीच कोई अंतर नहीं है; आप स्क्रिप्ट और मॉड्यूल दोनों को निष्पादित कर सकते हैं। फ़ाइल को pythonpath AFAIK पर होना चाहिए क्योंकि अजगर को प्रश्न में फ़ाइल खोजने में सक्षम होना चाहिए। यदि अजगर को किसी निर्देशिका से निष्पादित किया जाता है, तो निर्देशिका को स्वचालित रूप से अजगर में जोड़ा जाता है।

का संदर्भ लें क्या सबसे अच्छा तरीका है एक और अजगर स्क्रिप्ट से Python स्क्रिप्ट कॉल करने के लिए है? मॉड्यूल बनाम लिपियों के बारे में अधिक जानकारी के लिए

इसमें एक बिल्टइन फंक्शनल एफिलिफ़ाइल (फ़ाइल नाम) भी है जो आप चाहते हैं


1
यही मैंने भी सोचा था। हालाँकि, व्यवहार में मॉड्यूल आयात किए जा सकते हैं, लेकिन स्क्रिप्ट तब तक दुभाषिया द्वारा नहीं मिलती हैं जब तक कि वे उस निर्देशिका से शुरू न करें जो वे संबंधित हैं।
टायलर डर्डन

1
अधिक जानकारी के लिए docs.python.org/tutorial/modules.html#the-module-search-path पढ़ें । यह विवरण देता है कि फ़ाइल को खोजने के लिए अजगर को कहां रखा जाना चाहिए, विशेष रूप से, कई मॉड्यूल स्क्रिप्ट के रूप में "if __name__== __main__':" लाइन का उपयोग करके दोगुना कर सकते हैं
सांप और कॉफी

0

पायथन 3.6.5 के लिए

import os
os.getcwd()
runfile('testing.py')

1
की runfile()आज्ञा है ipython? मेरे लिए काम नहीं करता है।
user3342981
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.