Build a wheel/egg and all dependencies for a python project
You will need to create a setup.py
file for your package. Make sure you have the latest setuptools and pip installed. Then run the following:
python setup.py bdist_wheel
This will create a wheel file for your package. This assumes you don't have C/C++ headers, DLLs, etc. If you do, then you'll probably have a lot more work to do.
To get dependencies, you will want to create a requirements.txt
file and run the following:
pip wheel -r requirements.txt
If your package isn't on PyPI, then you'll have to manually copy your package's wheel file into the wheel folder that this command creates. For more information see the following excellent article:
- http://lucumr.pocoo.org/2014/1/27/python-on-wheels/
With the latest pip
and wheel
, you can simply run
pip wheel .
within your project folder, even if your application isn't on PyPi. All wheels will be stored in the current directory (.
).
To change the output directory (to for example, ./wheels), you may use the -w / --wheel-dir
option:
pip wheel . -w wheels
All the options available are listed at the pip documentation.
With poetry you can define your dependencies and metadata about your project in a file in the root of your project, called pyproject.toml
:
[tool.poetry]
name = "my-project"
version = "0.1.0"
description = "some longer description"
authors = ["Some Author <[email protected]>"]
[tool.poetry.dependencies]
python = "*"
[tool.poetry.dev-dependencies]
pytest = "^3.4"
To build your project as a wheel, execute poetry build
$ poetry build
Building my-project (0.1.0)
- Building sdist
- Built my-project-0.1.0.tar.gz
- Building wheel
- Built my-project-0.1.0-py3-none-any.whl
a dist/
folder is created with a wheel for your project.