विंडोज पर `#! / Usr / bin / env python` बनाना


14

मैं MSYS द्वारा प्रदान की गई विंडोज पर बैश का उपयोग करता हूं।

मैंने एक शेथबैंग के साथ पायथन फाइल चलाने की कोशिश की #!/usr/bin/env python, लेकिन मुझे यह त्रुटि संदेश मिला:

/usr/bin/env: python: No such file or directory

मैं यह काम करने के लिए क्या कर सकता हूं?

मुझे पता है कि मैं पायथन फाइल को इसके साथ प्रत्यय लगाकर लॉन्च कर सकता हूं python, लेकिन मैं चाहता हूं कि यह बिना प्रत्यय के भी काम करे।

जवाबों:


8

उदाहरण के लिए, जहां पायथन स्थापित किया गया है, वहां उचित पथ का उपयोग करें:

#!c:/Python/python.exe

यदि आपके सिस्टम पर यूनिक्स जैसा पथ समर्थन है (मैं MSYS से परिचित नहीं हूं), तो आप हमेशा अपने pythonनिष्पादन योग्य, अर्थात के आउटपुट में पथ दर्ज कर सकते हैं which python


2
या आप उपयोग कर सकते हैं env, जैसा कि पूछने वाला कर रहा है।
इग्नासियो वाज़केज़-अब्राम्स

मैं शेलबैंग को नहीं बदल सकता, यह एक परियोजना का हिस्सा है जिसमें अन्य प्रोग्रामर शामिल हैं जो लिनक्स और मैक पर काम करते हैं।
राम रचम

@RamRachum क्या के उत्पादन में है which envऔर which pythonऔर type python?
डैनियल बेक


0

जब आप चलाते हैं (शेल से) क्या होता है:

$ /usr/bin/env python

..?

यदि यह एक इंटरैक्टिव अजगर सत्र शुरू करता है, तो अजगर पाया जा सकता है। (आप भी बस चला सकते हैं:) type python। यदि यह "ऐसी कोई फ़ाइल या निर्देशिका" प्रिंट नहीं करता है, तो pythonआपके PATH में नहीं पाया जा रहा है। देखें कि समस्या को ठीक करने के लिए निम्नलिखित को ट्विक किया जा सकता है (पथ / / पायथन में रिक्त स्थान संभवतः समस्याएं पैदा करेंगे):

$ export PATH=$PATH:/path/to/python
$ /usr/bin/env python

0

मैं activate.shVirtualenv की फ़ाइल और MSYSGIT के बीच एक बेमेल संबंध निकला। यह विंडोज पर काम करने का इरादा नहीं था।


0

विंडोज 10 के नवीनतम संस्करण लिनक्स सबसिस्टम स्थापित करने का समर्थन करते हैं। यदि आप वहां से चलते हैं तो रास्ते सही होने चाहिए।

यदि आप इसे इस तरह से चलाने के साथ ठीक हैं तो यह एक कार्यशील समाधान होना चाहिए।


0

समस्या के मूल कि shebangs में रिक्त स्थान ऐसा है, तो एक निष्पादन करने के लिए अतिरिक्त तर्क की आपूर्ति के रूप में व्याख्या कर रहे हैं C:\Program Files\Python\python.exeके रूप में देखा जाता है C:\Programको देखते हुए Files\Python\python.exeएक तर्क के रूप।

इसके लिए सबसे अच्छा समाधान है, क्योंकि विंडोज $HOMEनिर्देशिका Program Filesऔर अन्य स्थानों में रिक्त स्थान और भले ही यह वास्तव में cmd.exe और पॉवर्सशेल और अन्य उपकरणों में चीजों को तोड़ सकता है, है:

पायथन को स्थापित करें C:\Pythonऔर उस C:\Pythonफ़ोल्डर को जोड़ें जहां python.exeरहता है और Scriptsनिर्देशिका जो उसके अंदर रहता है वह PATHसिस्टम या उपयोगकर्ता स्तर पर आपके पर्यावरण चर पर है।

आप सह-अस्तित्व के लिए पायथन 2.7.x और 3.x की जरूरत है, उन्हें में स्थापित C:\Python27और C:\Python36और C:\Python37और नाम बदलने python.exeके लिए python2.exe, python36.exe, python37.exe, आदि और उन फ़ोल्डर और उनके से प्रत्येक को जोड़ने Scriptsमें फ़ोल्डर्स PATH। आप यह निर्धारित करना चाहते हैं कि पायथन 3 संस्करणों में से कौन सा आप "डिफ़ॉल्ट" होना चाहते हैं और उस फ़ोल्डर में एक कॉपी भी बनाते हैं जो python3.exeकिसी भी स्क्रिप्ट का उपयोग करने के लिए संभालता है !#/usr/bin/env python3

यदि आपकी उपयोगकर्ता होम निर्देशिका में जगह है, तो आप pip install --user somepackageसिंटैक्स का उपयोग करने पर भी समस्याओं का अनुभव कर सकते हैं । --userअपने घर निर्देशिका में चूक, और अंतरिक्ष के साथ-साथ इस मामले में चीजों को ट्रिप होगा। वर्कअराउंड का वर्णन यहां किया गया है, लेकिन अपने पर्यावरण के लिए PYTHONUSERBASE निर्यात करने के लिए उबलता है।

export PYTHONUSERBASE=/myappenv
pip install --user SomePackage

या विंडोज में (पॉवर्सशेल):

$env:PYTHONUSERBASE='C:\PythonPkgs'
pip install --user SomePackage
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.