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:
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.
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.
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
I already had
wheel installed so I tried to uninstall and reinstall, and it fixed the issue:
pip uninstall wheel pip install wheel
My fix was
apt install python3-dev
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
Try modifying the setup.py file by importing setup from setuptools instead of distutils.core
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:
sudo apt install python-pip
sudo apt install python3-venv python3-pip
Using Ubuntu 18.04 this problem can be resolved by installing the
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.
in my case, the version of wheel/pip/setuptools created by venv is too old.
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.
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.
apt-get install python3-dev in my Ubuntu and added
If you’re using
setup.cfg files, add this before the
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
If none of the above works for you, perhaps you are experiencing the same problem that I did. I was only seeing this error when attempting to install
pyspark. The solution is explained in this other stackoverflow question unable to install pyspark.
I post this b/c it wasn’t immediately obvious to me from the error message that my issue was stemming solely from
pyspark‘s dependency on
pypandoc and I’m hoping to save others from hours of head scratching! =)
Perhaps, your pip version is outdated. I experienced the same problem in WSL while installing modules in a newly created virtual environment. I was able to resolve it by running the following command:
$ ./bin/python3 -m pip install --upgrade pip
I tried the
pip install wheel instruction given above, but it didn’t work because I was told that the requirement was already satisfied. It turned out that I was using python-3.10 and pip from my python-3.9 site packages. I finally realized that by entering
python --version and
pip --version and comparing the directories.
With this realization, I installed a new version of pip to go with my python-3.10, installed the wheel, and everything worked.
as @Philippe Remy mention,
should import from
from setuptools import setup
reference: Official doc https://setuptools.pypa.io/en/latest/index.html