पाइप स्थापित में "X के लिए फेल्ड बिल्डिंग व्हील" का क्या अर्थ है?


112

यह एसओ पर यहां वास्तव में लोकप्रिय प्रश्न है, लेकिन मैंने जिन कई उत्तरों को देखा है, उनमें से कोई भी स्पष्ट रूप से नहीं बताता है कि यह त्रुटि वास्तव में क्या है, और यह क्यों होता है।

भ्रम का एक स्रोत, यह है कि जब (उदाहरण के लिए) आप करते हैं pip install pycparser, तो आपको सबसे पहले त्रुटि मिलती है:

Failed building wheel for pycparser

जो तब संदेश द्वारा पीछा किया जाता है कि पैकेज था:

Successfully installed pycparser-2.19


# pip3 install pycparser

Collecting pycparser
  Using cached https://files.pythonhosted.org/packages/68/9e/49196946aee219aead1290e00d1e7fdeab8567783e83e1b9ab5585e6206a/pycparser-2.19.tar.gz
Building wheels for collected packages: pycparser
  Running setup.py bdist_wheel for pycparser ... error
  Complete output from command /usr/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-g_v28hpp/pycparser/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/pip-wheel-__w_f6p0 --python-tag cp36:
  Traceback (most recent call last):
    File "<string>", line 1, in <module>
    ...
    File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2349, in resolve
      module = __import__(self.module_name, fromlist=['__name__'], level=0)
  ModuleNotFoundError: No module named 'wheel.bdist_wheel'

  ----------------------------------------
  Failed building wheel for pycparser
  Running setup.py clean for pycparser
Failed to build pycparser
Installing collected packages: pycparser
  Running setup.py install for pycparser ... done
Successfully installed pycparser-2.19

यहाँ क्या हो रहा है?

(मैं यह समझना चाहूंगा कि कुछ कैसे विफल हो सकता है लेकिन फिर भी स्थापित हो सकता है और क्या आप इस पैकेज के कामकाज पर सही तरीके से भरोसा कर सकते हैं?)

अब तक मुझे मिली सबसे अच्छी आंशिक व्याख्या यही है


8
जब pipआवश्यकता के लिए एक पहिया नहीं मिलता है, तो यह स्रोत को डाउनलोड करता है और स्थानीय स्तर पर पहिया बनाने की कोशिश करता है। सफलता पर, पहिया pipभविष्य के पुनर्स्थापना के लिए कैश में संग्रहीत किया जाता है । ऑन व्हील बिल्ड विफलता, pipस्रोत से लीगेसी इंस्टॉलेशन पर स्विच करना डिस्टर्बिंग (इनवोकिंग python setup.py install)।
फहराना

आपके मामले में, आप wheelपैकेज को याद कर रहे हैं ताकि pipस्रोत से पहियों का निर्माण करने में असमर्थ हो। यदि आप निर्माण पहियों को स्पष्ट रूप से अक्षम करना चाहते हैं, तो --no-binaryध्वज का उपयोग करें pip install somepkg --no-binary=somepkg:। या उपयोग करें pip install somepkg --no-binary=:all:, लेकिन सावधान रहें कि यह इंस्टालेशन के लिए चयनित प्रत्येक पैकेज के लिए पहियों को अक्षम करेगा, जिसमें निर्भरता भी शामिल है; अगर कुछ पैकेज pipस्थापित करने के लिए कोई स्रोत उपलब्ध नहीं है , तो स्थापना विफल हो जाएगी।
फहराया

2
@ उभयलिंग: आपकी पहली टिप्पणी सही कारण थी और इसका उत्तर हो सकता है। दूसरा गलत है: स्रोत वितरण --no-binaryको केवल डाउनलोड करने और उपयोग करने के लिए पाइप को निर्देश देता है । स्थानीय बाइनरी व्हील के निर्माण को रोकने के लिए ध्वज वास्तव में है --no-cache-dir
सर्ज बलेस्टा

@ जो मेरे पास है wheels(0.32.2) ताकि समस्या न हो। लेकिन शायद pycparserपैकेज में एक पहिया ( *.whl) जुड़ा नहीं है? लेकिन मैं यह कैसे जांच कर सकते हैं एक-प्रायोरी ?
रात

1
आप pypi.org/project/pycparser पर PyPI साइट से परामर्श कर सकते हैं और फिर फ़ाइलों के लिए पूछ सकते हैं । फिर आप देख सकते हैं कि केवल एक .tar.gzफ़ाइल है और यह PyPI पर स्रोत वितरण है (एक पहिया में एक .whlविस्तार होगा)
सर्ज

जवाबों:


93

(यहाँ पाइप अनुचर!)

यदि पैकेज एक पहिया नहीं है, तो पाइप इसके लिए (के माध्यम से setup.py bdist_wheel) एक पहिया बनाने की कोशिश करता है । यदि वह किसी भी कारण से विफल हो जाता है, तो आपको "फेक बिल्डिंग व्हील फॉर पीपरपेर" संदेश मिलता है और पाइप सीधे (के माध्यम से setup.py install) स्थापित करने के लिए वापस गिर जाता है ।

एक बार जब हमारे पास एक पहिया होता है, तो पाइप पहिया को सही ढंग से अनपैक करके स्थापित कर सकता है। पाइप पहियों के माध्यम से पैकेज स्थापित करने की कोशिश करता है जितनी बार यह कर सकता है। इसका कारण पहियों का उपयोग करने के विभिन्न फायदे हैं (जैसे तेज इंस्टॉल, कैश-सक्षम, कोड को फिर से निष्पादित नहीं करना आदि)।


यहां आपका त्रुटि संदेश wheelपैकेज के लापता होने के कारण है , जिसमें पहियों को बनाने के लिए आवश्यक तर्क शामिल हैं setup.py bdist_wheel। ( pip install wheelठीक कर सकते हैं।)


उपरोक्त विरासत व्यवहार है जो वर्तमान में डिफ़ॉल्ट है; हम डिफ़ॉल्ट रूप से PEP 517 पर स्विच करेंगे, भविष्य में कभी-कभी, हमें इसके लिए एक मानक-आधारित प्रक्रिया में ले जाएंगे। हमने इसके लिए अलग-अलग बिल्ड भी बनाए हैं, आप डिफ़ॉल्ट रूप से उन वातावरणों में पहिया स्थापित करेंगे। :)


1
ओपी लिखने के समय, मेरे पास पहले से ही wheelपैकेज स्थापित था। कृपया PEP517 का लिंक भी जोड़ें।
not2qubit

क्या आपके पास सेटपूल या व्हील का पुराना संस्करण स्थापित है? यदि नहीं, तो ऐसा लगता है कि वहाँ विफलता का कारण है। वैसे भी, पाइप के पीओवी से, यह पहिया बनाने में विफल रहा और इस तरह यह सामान्य रूप से स्थापित होता है।
प्रद्युम्नगृह

48

कल, मुझे वही त्रुटि मिली: Failed building wheel for hddfancontrolजब मैं भागा pip3 install hddfancontrol। परिणाम था Failed to build hddfancontrol। कारण था error: invalid command 'bdist_wheel'और Running setup.py bdist_wheel for hddfancontrol ... error। निम्न चलाकर त्रुटि को ठीक किया गया था:

 pip3 install wheel

( यहां से ।)

वैकल्पिक रूप से, "पहिया" यहां से सीधे डाउनलोड किया जा सकता है । जब डाउनलोड किया जाता है, तो इसे निम्न चलाकर स्थापित किया जा सकता है:

pip3 install "/the/file_path/to/wheel-0.32.3-py2.py3-none-any.whl"

pip3 install wheelमहान काम किया, 'python3 -m venv' के अंदर भी, क्योंकि आज मैं vev में नया हूं
मनोहर रेड्डी Poreddy

1
पहिया स्थापित करने के बाद भी मेरे लिए काम नहीं कर रहा है!
वात्सल्य

31

चूंकि, कोई भी खुद के अलावा इसका उल्लेख नहीं करता है। उपरोक्त समस्या का मेरा स्वयं का समाधान अक्सर उपयोग करके कैश्ड प्रतिलिपि को अक्षम करना सुनिश्चित करता है pip install <package> --no-cache-dir:।


1
यदि केवल संदेश से छुटकारा पाना आपका लक्ष्य है, तो इसे ठीक माना जा सकता है, अन्यथा मैं इसे एक समाधान कहूंगा।
निल्स मैग्नस

@NilsMagnus यह बस नहीं है getting rid of the message, यह इंस्टॉलर को तब भी आगे बढ़ने की अनुमति दे रहा है जब इंस्टॉलर को लगता है कि यह पहले से अपडेट हो चुका है, कैश डायरेक्टरी पिछले और अक्सर असफल अपडेट से युक्त है।
नॉटआउट

^^ यही कहा, मैं सोच क्यों इस डिफ़ॉल्ट व्यवहार नहीं है पर रखने? जब आप अपडेट कर रहे हैं तो कैश्ड प्रतियां कौन रखना चाहते हैं? बस कोई मतलब नहीं है।
नॉटआउट

4
प्रश्न का स्वीकृत उत्तर कैसा है? यह प्रश्न का उत्तर नहीं देता है।
पास्कलीव

1
क्योंकि उसने खुद ही पूछा और इसका उत्तर भी दिया। मुझे लगता है कि इस तरह से वह अपने स्वयं के उत्तर को स्वीकार कर सकता है, मुझे विश्वास है अजीब लगता है, लेकिन यह मामला हो सकता है।
अमित अमोला

4

यह पैकेज परिनियोजन परिप्रेक्ष्य से इस प्रश्न को हल करने में सहायक हो सकता है।

वहाँ कई ट्यूटोरियल हैं जो बताते हैं कि PyPi को पैकेज कैसे प्रकाशित किया जाए। नीचे एक जोड़ी है जिसका मैंने उपयोग किया है;

मध्यम
वास्तविक अजगर

मेरा अनुभव यह है कि इनमें से अधिकांश ट्यूटोरियल में आप केवल स्रोत के .tar का उपयोग करते हैं, न कि व्हील के। इस प्रकार, जब इन ट्यूटोरियल का उपयोग करके बनाए गए पैकेज स्थापित करते हैं, तो मुझे "पहिया बनाने में विफल" त्रुटि मिली है।

मुझे बाद में PyPi पर Python Software Foundation के डॉक्स का लिंक मिला PSF डॉक्स । मुझे पता चला कि उनकी स्थापना और निर्माण की प्रक्रिया थोड़ी अलग है, और वास्तव में एक पहिया फ़ाइल का निर्माण शामिल है।

आधिकारिक रूप से प्रलेखित विधि का उपयोग करने के बाद, मुझे अपने पैकेजों को स्थापित करते समय त्रुटि नहीं मिली।

तो, त्रुटि बस इस बात की हो सकती है कि डेवलपर ने परियोजना को कैसे पैक किया और तैनात किया। हम में से कोई भी यह जानने के लिए पैदा नहीं हुआ था कि PyPi का उपयोग कैसे किया जाए, और यदि वे गलत ट्यूटोरियल पर हुए - ठीक है, तो आप रिक्त स्थान को भर सकते हैं।

मुझे यकीन है कि यह त्रुटि का एकमात्र कारण नहीं है, लेकिन मैं शर्त लगाने को तैयार हूं कि इसका एक प्रमुख कारण है।


2

इसे इस्तेमाल करे:

sudo apt-get install libpcap-dev libpq-dev

यह मेरे लिए काम किया है जब मैंने इन दोनों को स्थापित किया है।

अधिक जानकारी के लिए यहां लिंक देखें


0

उबंटू 18.04 पर, मैं इस मुद्दे पर भाग गया क्योंकि aptपैकेज wheelमें wheelकमांड शामिल नहीं है । मुझे लगता है कि पाइप wheelअजगर पैकेज को आयात करने की कोशिश करता है , और यदि वह सफल होता है तो यह मान लेता है कि wheelकमांड भी उपलब्ध है। उबटन उस धारणा को तोड़ता है।

उपयुक्त python3 कोड पैकेज का नाम है python3-wheel। यह स्वचालित रूप से स्थापित है क्योंकि python3-pipयह अनुशंसा करता है।

उपयुक्त python3 व्हील कमांड पैकेज का नाम है python-wheel-common। इसे स्थापित करना मेरे लिए "विफल निर्माण पहिया" त्रुटियों को ठीक करता है।



0

मुझे वही संदेश मिला जब मैंने पाइप इंस्टॉल करने की कोशिश की django-imagekit। इसलिए मैंने पाइप इंस्टॉल व्हील चलाया (मुझे अजगर 2.7 था) और फिर मैंने रंजन पाइप को django-imagekit स्थापित किया और यह काम किया। धन्यवाद


0

मैं यह जोड़ना चाहूंगा कि यदि आपके पास केवल आपके सिस्टम पर Python3 है तो आपको पाइप के बजाय pip3 का उपयोग शुरू करने की आवश्यकता है।

आप निम्न आदेश का उपयोग करके pip3 स्थापित कर सकते हैं;

sudo apt install python3-pip -y

इसके बाद आप उस पैकेज को स्थापित करने का प्रयास कर सकते हैं जिसकी आपको आवश्यकता है;

sudo pip3 install <package>

0

त्रुटि:

सिस्टम: aws ec2 उदाहरण (t2 छोटा)

मुद्दा: के माध्यम से opencv अजगर स्थापित करते समय

pip3 install opencv-python

  Problem with the CMake installation, aborting build. CMake executable is cmake
  
  ----------------------------------------
  Failed building wheel for opencv-python
  Running setup.py clean for opencv-python

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

pip3 install --upgrade pip setuptools wheel

इसके बाद भी आपको फ़ॉलिंग एरर एरर प्राप्त हो सकता है

    from .cv2 import *
ImportError: libGL.so.1: cannot open shared object file: No such file or directory

परिवाद स्थापित करने से मेरे लिए त्रुटि हल हो गई।

sudo apt update
sudo apt install libgl1-mesa-glx

उम्मीद है की यह मदद करेगा


0

मुझे Brotli स्थापित करते समय भी यही समस्या थी

त्रुटि

Failed building wheel for Brotli

मैंने इसे यहां.whl से फ़ाइल डाउनलोड करके और नीचे दिए गए कमांड का उपयोग करके इसे हल किया

C:\Users\{user_name}\Downloads>pip install Brotli-1.0.9-cp39-cp39-win_amd64.whl

-1

यह आपकी मदद कर सकता है! ....

स्थापना रद्द करें:

pip uninstall pycparser

Pycparser को पुनर्स्थापित करें:

pip install pycparser

टर्मकोलर स्थापित करते समय मुझे वही त्रुटि मिली और मैंने इसे पुनः स्थापित करके ठीक किया।

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