python - DistutilsOptionError: दोनों या तो घर या उपसर्ग/निष्पादन उपसर्ग की आपूर्ति करनी चाहिए-दोनों नहीं




google-app-engine install (6)

मैं आमतौर पर पाइप के माध्यम से पायथन पैकेज स्थापित किया गया है।

Google App Engine के लिए, मुझे अन्य लक्ष्य निर्देशिका में पैकेज इंस्टॉल करने की आवश्यकता है।

मैंने कोशिश की:

पाइप इंस्टॉल- मैं फ्लास्क-आराम से - लक्ष्य ./lib

लेकिन यह विफल रहता है:

घर या उपसर्ग / निष्पादन उपसर्ग की आपूर्ति करनी चाहिए - दोनों नहीं

में इससे कैसे चला सकता हूँ?


ओएसएक्स (मैक) पर, एक प्रोजेक्ट फ़ोल्डर मानते हुए जिसे / var / myproject कहा जाता है

  1. cd /var/myproject
  2. setup.cfg नामक एक फ़ाइल बनाएं और [install] prefix= जोड़ें
  3. रन pip install <packagename> -t .

क्या आप ओएस एक्स और होमब्रू का उपयोग कर रहे हैं? होमब्रू पायथन पेज https://github.com/Homebrew/brew/blob/master/docs/Homebrew-and-Python.md पीआईपी के साथ एक ज्ञात समस्या और आसपास के काम को बुलाता है।

मेरे लिए काम किया

आप निम्नलिखित सामग्री के साथ ~ / .pydistutils.cfg फ़ाइल जोड़कर डिफ़ॉल्ट "खाली उपसर्ग" बना सकते हैं:

[install]
prefix=

संपादित करें: इस होमब्रू अनुशंसित विकल्प का उपयोग न करें, यह सामान्य पीआईपी संचालन को तोड़ देगा


मेरा भी वही मुद्दा है। मैं त्रुटि से बचने के लिए - सिस्टम फ्लैग का उपयोग करता हूं क्योंकि मैं here अन्य धागे पर लिखता हूं जहां मैं अपनी स्थिति के विशिष्ट मामले की व्याख्या करता हूं। मैं इसे यहां उम्मीद करता हूं कि किसी भी समस्या का सामना करने में किसी की भी मदद कर सके।


मेरा मानना ​​है कि इस समस्या का एक आसान समाधान है (मैकोज़ पर होमब्रू का पायथन) जो आपके सामान्य पीआईपी संचालन को तोड़ नहीं देगा।

आपको बस अपनी परियोजना की मूल निर्देशिका में setup.cfg फ़ाइल बनाना है, आमतौर पर जहां आपकी मुख्य __init__.py या निष्पादन योग्य पीई फ़ाइल है। तो यदि आपकी प्रोजेक्ट का रूट फ़ोल्डर है: /path/to/my/project/ , वहां setup.cfg फ़ाइल बनाएं और अंदर जादू शब्द डालें:

[install]
prefix=  

ठीक है, अब आप उस फ़ोल्डर के लिए पाइप के आदेश चलाने में सक्षम हो सकते हैं:

pip install package -t /path/to/my/project/  

यह आदेश केवल उस फ़ोल्डर के लिए शानदार ढंग से चलाएगा। बस जो भी अन्य परियोजनाओं के लिए setup.cfg कॉपी करें। आपकी होम निर्देशिका पर .pydistutils.cfg लिखने की आवश्यकता नहीं है। मॉड्यूल स्थापित करने के बाद, आप setup.cfg को हटा setup.cfg


यदि आप वर्चुअलएन्व * का उपयोग कर रहे हैं, तो यह जांचना एक अच्छा विचार हो सकता है which pip आप which pip का उपयोग कर रहे हैं।

यदि आप कुछ ऐसा देखते हैं जैसे /usr/local/bin/pip आप अपने पर्यावरण से बाहर हो गए हैं। अपने वर्चुअलएन्व को पुनः सक्रिय करने से यह ठीक हो जाएगा:

वर्चुअलएएनवी: $ source bin/activate

वर्चुअलफ़िश: $ vf activate [environ]

*: मैं वर्चुअलफिश का उपयोग करता हूं, लेकिन मुझे लगता है कि यह टिप दोनों के लिए प्रासंगिक है।


होमब्री उपयोगकर्ताओं के लिए एक और समाधान * virtualenv का उपयोग करना है।

बेशक, यह वैसे भी लक्ष्य निर्देशिका की आवश्यकता को हटा सकता है - लेकिन यहां तक ​​कि अगर ऐसा नहीं होता है, तो मैंने पाया है --target वर्चुअल वातावरण में जब --target डिफ़ॉल्ट रूप से कार्य करता है (जैसा कि, कॉन्फ़िगरेशन फ़ाइल बनाने / संशोधित किए बिना)।

* मैं समाधान कहता हूं; शायद यह venvs का सावधानीपूर्वक उपयोग करने के लिए एक और प्रेरणा है ...





distutils