# Uploading wheels to PyPI with ## Using twine and setup.py Requirements: ```bash python3 -m pip install --upgrade twine build ``` Run build to generate the distribution wheels: ```bash python3 -m build --wheel ``` Run Twine to upload all of the archives under `dist`: Test upload ```bash python3 -m twine upload --repository testpypi dist/* ``` Real upload: ```bash python3 -m twine upload -u fnl dist/* ``` ## Using Poetry Requirements: see [[Poetry setup]] **Limitation**: only pure Python wheels are supported (cython!) Run build to generate the distribution wheels: ```shell poetry build # only pure python wheels supported ``` And then upload to PyPI: ```shell poetry publish --username fnl --dry-run ```