Why is python setup.py saying invalid command 'bdist_wheel' on Travis CI?
My Python package has a
setup.py which builds fine locally on Ubuntu Trusty and on a fresh Vagrant Ubuntu Trusty VM when I provision it like this:
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
But when I do the same on a Travis CI Trusty Beta VM:
- 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'
This Why can I not create a wheel in python? is related but note I am installing wheel and upgrading setuptools.
This problem is due to:
- an old version of pip (6.1.1) being installed for Python 2.7
- multiple copies of Python 2.7 installed on the Trusty Beta image
- a different location for Python 2.7 being used for
It's all a bit complicated and better explained here https://github.com/travis-ci/travis-ci/issues/4989.
My solution was to install with user
travis instead of
- pip2.7 install --upgrade --user travis pip setuptools wheel virtualenv
Had to install the
wheel package. Everything was up to date but still giving the error.
pip install wheel
python setup.py bdist_wheel
Worked without issues.
Read more... Read less...
2 hours wasted.
On a AWS
Ubuntu 18.04 new machine, below installations are required:
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
Especially the last line is must.
However before 3 lines might be required as prerequisites.
Hope that helps.
pip install wheel
worked for me, but you can also add this
setup( ... setup_requires=['wheel'] )
to setup.py and save yourself a pip install command
If you already have all the required modules installed you probably need to import the
setuptools module in your
setup.py file. So just add the following line at the leading of
import setuptools from distutils.core import setup # other imports and setups
This is also mentioned in wheel's documentation. https://wheel.readthedocs.io/en/stable/#usage
in my case, the version of wheel/pip/setuptools created by venv is too old. this works:
venv/bin/pip install --upgrade pip wheel setuptools
This error is weird as many proposed answers and got mixed solutions. I tried them, add them. It was only when I added
pip install --upgrade pip finally removed the error for me. But I have no time to isolate which is which,so this is just fyi.