मैं अजगर में सबप्रोसेस बनाने की कोशिश कर रहा हूं जो कोंडा एनवी को सक्रिय करता है और फिर शेल स्क्रिप्ट चलाता है। इसे प्राप्त करने के लिए मैं निम्नलिखित कर रहा हूँ

subprocess.call("""conda activate r_conda && Rscript -e 'rmarkdown::render("test.Rmd")'""", shell=True,  executable="/bin/bash")

हालांकि, मुझे निम्न त्रुटि मिल रही है:

CommandNotFoundError: 'कोंडा एक्टिवेट' का उपयोग करने के लिए आपका शेल ठीक से कॉन्फ़िगर नहीं किया गया है।

हालांकि मैं test.sh फ़ाइल में निम्नलिखित के रूप में शेल स्क्रिप्ट में कोड ले जाकर इसे प्राप्त करने में सक्षम हूं।

conda activate r_conda
Rscript -e 'rmarkdown::render("test.Rmd")'

तब मैं निम्नलिखित कोड चला सकता हूं:

subprocess.call("""bash -i test.sh""", shell=True)

तो कोई भी शेल स्क्रिप्ट लिखे बिना इसे कैसे करें?

0
Kush Patel 22 अप्रैल 2020, 07:23

1 उत्तर

सबसे बढ़िया उत्तर

आपको कोंडा चलाने के लिए आवश्यक वातावरण को सेटअप करने की आवश्यकता है। (यदि आप इसे कमांड-लाइन पर चलाते हैं तो .bash_profile जैसी init स्क्रिप्ट के माध्यम से किया जाता है)

शायद इसे जोड़ने का प्रयास करें: eval "$(conda shell.bash hook)"

subprocess.call("""eval "$(conda shell.bash hook)" && conda activate r_conda && echo $CONDA_DEFAULT_ENV""", shell=True,  executable="/bin/bash")

यह आपके कोंडा पर्यावरण नाम - r_conda का प्रिंट आउट ले लेगा।

1
lishrimp 22 अप्रैल 2020, 04:43