ट्रैविस CI पर python setup.py अवैध कमांड 'bdist_wheel' क्यों कह रहा है?


330

मेरे पायथन पैकेज में setup.pyउबंटू ट्रस्टी और स्थानीय रूप से उबंटू ट्रस्ट के एक ताज़े वैजेंट उबंटू वीएम पर स्थानीय रूप से ठीक है, जब मैं इस तरह का प्रावधान करता हूं:

sudo apt-get install python python-dev --force-yes --assume-yes --fix-broken
curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | sudo python2.7
sudo -H pip install setuptools wheel virtualenv --upgrade

लेकिन जब मैं एक ट्रैविस सीआई ट्रस्टी बीटा वीएम पर ऐसा ही करता हूं:

- sudo apt-get install python python-dev --force-yes --assume-yes --fix-broken
- curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | sudo python2.7
- sudo -H pip install setuptools wheel virtualenv --upgrade

मुझे मिला:

python2.7 setup.py bdist_wheel
usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
   or: setup.py --help [cmd1 cmd2 ...]
   or: setup.py --help-commands
   or: setup.py cmd --help
error: invalid command 'bdist_wheel'

यह मैं अजगर में एक पहिया क्यों नहीं बना सकता हूं? संबंधित है, लेकिन ध्यान दें कि मैं पहिया स्थापित कर रहा हूं और सेटपूल को अपग्रेड कर रहा हूं।

जवाबों:


469

wheelपैकेज स्थापित करना था । सब कुछ अप टू डेट था लेकिन फिर भी त्रुटि दे रहा था।

pip install wheel

फिर

python setup.py bdist_wheel 

बिना मुद्दों के काम किया।


59
"पिप इंस्टॉल व्हील" कभी-कभी पर्याप्त होता है
ऑक्सीडवर्क्स

20
मुझे ज़रूरत थी pip3 install wheel- क्योंकि मेरे पास पहले से ही पहिया था, pipलेकिन नहीं pip3
तेतरदेव

2
यह काम किया है, लेकिन pip install wheelमैं करने के लिए pip uninstall -r requirements.txtऔर फिर से करना थाpip install -r requirements.txt
simple_code

9
can't open file 'setup.py': [Errno 2] No such file or directory
सेरिन

4
क्या wheelएक स्वच्छ आभासी वातावरण में स्वचालित रूप से स्थापित करने का एक तरीका है? python3 -m venv --system-site-packagesबहुत अधिक पैकेज जोड़ देगा।
तोबियास सेट्टे

83
pip install wheel

मेरे लिए काम किया है, लेकिन आप इसे भी जोड़ सकते हैं

setup(
    ...
    setup_requires=['wheel']
)

setup.py और अपने आप को एक पाइप स्थापित कमांड को बचाने के लिए


2
उन लोगों के पास पहले से ही पहिया लगा हुआ है और अभी भी setup_requires=['wheel']इस त्रुटि से छुटकारा पाने के लिए त्रुटि हो सकती है
शंकर पंडला

1
यह अपेक्षा के अनुसार काम नहीं करता है: 1 - पहली बार में यह केवल इसलिए काम करता है क्योंकि हमने wheelपाइप के साथ स्थापित किया है। यह एक साफ स्थापना में फिर से विफल हो जाएगा 2 - प्रलेखन का कहना है "नोट: setup_requires में सूचीबद्ध परियोजनाएं स्वचालित रूप से उस सिस्टम पर स्थापित नहीं होंगी जहां सेटअप स्क्रिप्ट चलाई जा रही है।"
टोबियास सेटेट

इतना ही नहीं, @TobiasSette, लेकिन उसी दस्तावेज़ीकरण लिंक का कहना है: "चेतावनी का उपयोग करना setup_requires PEP-518 के पक्ष में हतोत्साहित किया जाता है।"
जेफ राइट

71

जनवरी 2020

2 घंटे बर्बाद।

AWS पर Ubuntu 18.04 new machine, नीचे दिए गए इंस्टॉलेशन आवश्यक हैं:

sudo apt-get install gcc libpq-dev -y
sudo apt-get install python-dev  python-pip -y
sudo apt-get install python3-dev python3-pip python3-venv python3-wheel -y
pip3 install wheel

विशेषकर अंतिम पंक्ति अवश्य है।
हालाँकि इससे पहले 3 लाइनों को आवश्यक शर्तें के रूप में आवश्यक किया जा सकता है।

उम्मीद है की वो मदद करदे।


2
ठीक एक साल बाद, और आपने मुझे बहुत संघर्ष करने से बचाया है। धन्यवाद।
डेवियन मीन

7
मैं --no-install-recommendsएक डॉकर छवि ( DL3015 ) में उपयोग कर रहा था और इस त्रुटि में चल रहा था, मुझे स्पष्ट रूप से स्थापित करने की आवश्यकता थी python3-wheel। धन्यवाद!
dimo414

यह जानकर अच्छा लगा कि मेरी मदद एक आभासी वातावरण (वेनव) में हुई।
मनोहर रेड्डी ने 6

1
मुझे घंटों बचाया! बहुत बहुत धन्यवाद @ManoharReddyPoreddy
राहुल

1
अंतिम पंक्ति एक नो-ऑप होना चाहिए, क्योंकि पहिया पहले से ही स्थापित है। क्या आपने इसे चलाया --upgrade? अगर कोई भी उबंटू 18.04 से शुरू होने वाला एक न्यूनतम डॉकरीफाइल बनाने में सक्षम है जो सोने का मानक होगा।
l0b0

51

इस समस्या के कारण है:

  • पाइथन 2.7 के लिए पाइप का एक पुराना संस्करण (6.1.1) स्थापित किया जा रहा है
  • भरोसेमंद बीटा छवि पर पायथन 2.7 की कई प्रतियां स्थापित की गईं
  • पायथन 2.7 के लिए एक अलग स्थान का उपयोग किया जा रहा है sudo

यह सब थोड़ा जटिल और बेहतर बताया गया है यहाँ https://github.com/travis-ci/travis-ci/issues/4989

मेरा समाधान उपयोगकर्ता के travisबजाय स्थापित करना था sudo:

- pip2.7 install --upgrade --user travis pip setuptools wheel virtualenv

8
मेरे मामले में, sudo -H pip install setuptools --upgradeसमस्या हल हो गई।
मार्टिन थोमा

2
@MartinThoma आपके टिप के लिए धन्यवाद। इसे जारी करने के बाद मेरे लिए काम कियाsudo -H pip install wheel --upgrade
तारिक

उन्नयन पिप 9.0.1 करने के लिए 20.0.2 मेरे मामले में पर्याप्त था,
Seyf

45

यदि आपके पास पहले से ही सभी आवश्यक मॉड्यूल स्थापित हैं, तो संभवतः आपको setuptoolsअपनी setup.pyफ़ाइल में मॉड्यूल आयात करने की आवश्यकता है । तो बस setup.pyफ़ाइल के अग्रणी पर निम्न पंक्ति जोड़ें ।

import setuptools
from distutils.core import setup
# other imports and setups

पहिया के दस्तावेज में भी इसका उल्लेख है। https://wheel.readthedocs.io/en/stable/#usage


6
इसने मेरे लिए काम किया। मैं सेटअप के लिए सेटप्टूल के बजाय डिस्टुटिल्स का उपयोग कर रहा था और मेरे पास पहले से ही व्हील पैकेज स्थापित था।
एलेक्स कास्ज़ेंस्की

26

यह त्रुटि अजीब है क्योंकि कई प्रस्तावित उत्तर और मिश्रित समाधान मिले हैं। मैंने उन्हें कोशिश की, उन्हें जोड़ें। यह केवल तभी था जब मैंने जोड़ा pip install --upgrade pipआखिरकार मेरे लिए त्रुटि हटा दी। लेकिन मेरे पास अलग करने के लिए समय नहीं है जो कि है, इसलिए यह सिर्फ फेय है।


23

मेरे मामले में, वेनव द्वारा बनाया गया पहिया / पाइप / सेटप्टूल का संस्करण बहुत पुराना है। यह काम:

venv/bin/pip  install --upgrade pip wheel setuptools

11

मैंने पहले से ही wheelस्थापित किया था इसलिए मैंने अनइंस्टॉल करने और पुन: स्थापित करने का प्रयास किया, और इसने समस्या को ठीक किया:

pip uninstall wheel
pip install wheel

अजीब...


एफडब्ल्यूआईडब्ल्यू मुझे सिर्फ इस त्रुटि का सामना करना पड़ा और मेरे लिए काम करना अनइंस्टॉल करना और पुनः स्थापित करना
विंसेंट


6

अपने में setup.py, यदि आपके पास:

from distutils.core import setup

फिर, इसे बदल दें

from setuptools import setup

फिर अपने virtualenv को फिर से बनाएं और कमांड को फिर से चलाएँ, और यह काम करना चाहिए।


1
यह मेरी समस्या को ठीक करता है। धन्यवाद। +1
हाई वू

5

Distutils.core के बजाय setuptools से सेटअप आयात करके setup.py फ़ाइल को संशोधित करने का प्रयास करें


मेरे लिए काम किया! मैं Python2 से Python3 के लिए एक पैकेज की ओर पलायन कर रहा था और दुर्भाग्य से उस के लिए एक गाइड नहीं मिल रहा था। कोई भी ऐसा करने और इस समस्या से निराश होने पर, यह आपके लिए कर सकता है!
स्काईट्रेडर

4

मैंने किया था apt-get install python3-devमेरी उबंटू में और कहा कि setup_requires=["wheel"]मेंsetup.py


10
यह चलाने के लिए पर्याप्त हो सकता है pip install wheel
कप


1

उबंटू 18.04 का उपयोग करके इस समस्या को python3-wheelपैकेज स्थापित करके हल किया जा सकता है ।

आमतौर पर इसे किसी भी पायथन पैकेज पर निर्भरता के रूप में स्थापित किया जाता है। लेकिन विशेष रूप से जब कंटेनर छवियों का निर्माण आप अक्सर साथ काम करते हैं --no-install-recommendsऔर इसलिए यह अक्सर गायब होता है और इसे पहले मैन्युअल रूप से स्थापित किया जाना है।


0

ट्रैविस सीआई से संबंधित नहीं है, लेकिन मैं jupyterअपने मैक ओएसएक्स 10.8.5 पर स्थापित करने की कोशिश में इसी तरह की समस्या में भाग गया , और अन्य जवाबों में से कोई भी मदद का नहीं था। समस्या पैकेज नामक "व्हील" के निर्माण के कारण हुई थीpyzmq , जिसमें सैकड़ों पृष्ठों में त्रुटि संदेश थे।

मुझे जो समाधान मिला वह सीधे उस पैकेज के पुराने संस्करण को स्थापित करना था:

python -m pip install pyzmq==17 --user

उसके बाद, jupyterत्रुटियों के बिना सुसाइड की स्थापना ।


0

यदि आप setup.cfgफ़ाइलों का उपयोग कर रहे हैं , तो इस install_requireभाग से पहले जोड़ें :

setup_requires =
    wheel

Setup.cfg परियोजना का उदाहरण:

# setup.py
from setuptools import setup

setup()
# setup.cfg
[metadata]
name = name
version = 0.0.1
description = desc
long_description = file: README.md
long_description_content_type = text/markdown
url = url
author = author
classifiers =
    Programming Language :: Python
    Programming Language :: Python :: 3

[options]
include_package_data = true
packages = find:
setup_requires =
    wheel
install_requires =
    packages
    packages
    packages
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.