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
I get:
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.
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 setup.py file.
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
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.
Had to install the wheel package. Everything was up to date but still giving the error.
pip install wheel
then
python setup.py bdist_wheel
worked without issues.
This problem is due to:
sudoIt'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 sudo:
- pip2.7 install --upgrade --user travis pip setuptools wheel virtualenv
If you're using setup.cfg files, add this before the install_require part:
setup_requires =
wheel
Example of setup.cfg project :
# 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
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
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 a must.
However before 3 lines might be required as prerequisites.
In your setup.py, if you have:
from distutils.core import setup
Then, change it to
from setuptools import setup
Then re-create your virtualenv and re-run the command, and it should work.
I did apt-get install python3-dev in my Ubuntu and added setup_requires=["wheel"] in setup.py
Not related to Travis CI but
I ran into similar problem trying to install jupyter on my Mac OSX 10.8.5, and none of the other answers was of help. The problem was caused by building the "wheel" for the package called pyzmq, with error messages filling hundreds of pages.
The solution I found was to directly install an older version of that package:
python -m pip install pyzmq==17 --user
After that, the installation of jupyter succeded without errors.
It helped me to follow instructions in here:
https://packaging.python.org/guides/installing-using-linux-tools/
Debian/Ubuntu
Python 2:
sudo apt install python-pip
Python 3:
sudo apt install python3-venv python3-pip
Using Ubuntu 18.04 this problem can be resolved by installing the python3-wheelpackage.
Usually this is installed as a dependency on any Python package. But especially when building container images you often work with --no-install-recommends and therefore it is often missing and has to be installed manually first.
Try modifying the setup.py file by importing setup from setuptools instead of distutils.core
My fix was apt install python3-dev