New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Upload wheels to PyPI #196
Comments
Wheels are great of course, but this project contains C extensions, so the full set of wheels would not be doable through one |
@bsolomon1124 It seems there is an initial implementation of wheel building using cibuildwheel in |
I'd like to chip and second this request, if it's possible. We're running into a problem deploying a Chalice application that depends on Thanks for all your work on this project! |
As per above discussion, we know that pyrsistent doesn't have wheel for aarch64/x86 on PyPI repository. So, while installing pyrsistent via pip on aarch64/x86 machine, pip builds the source code resulting in it takes more time to install pyrsistent. Making wheel available for aarch64/x86 will benefit aarch64/x86 users by minimizing pyrsistent installation time. We can release the wheel using CI/CD tools such as Travis-ci, circle-ci, azure-pipeline etc... @tobgu, please let me know if I can help you building wheel/uploading to PyPI repository. I am curious to make pyrsistent wheel available for aarch64. It will be a great opportunity for me to work with you. |
Hi, thanks for reporting this and sorry for not taking the time to respond earlier. I realise that adding wheels is something that many of you would like (see also the older issue #88) but I haven't really gotten to it. I imagine what I would like to do is from Travis, or similar, build and push a number of wheels on successful build of a tagged release. There may be better ways of doing it though... One thing I know I don't want for sure is to maintain a bunch of VMs for the different targets and build the wheels myself. So, I'm now asking for some input to be able to move forward on this:
Thanks! |
@tobgu I think the main platform the people are interested in is Linux, specifically because pyrsistent gets used used in AWS Lambda via Chalice, and thus The two projects I know of that are probably worth looking at for inspiration are cryptography and cffi. I haven't dove too deeply into how they're building their wheels, but from what I can see, cffi might be an easier starting point. |
It can also help in some Docker contexts, as some times you can generate slimmer images (also simpler to maintain) if you can avoid having to include a C compiler. |
@tobgu While looking up another issue, I stumbled across this, which may be useful to you: https://github.com/joerick/cibuildwheel It looks solid, the documentation is good, and it's used by some prominent projects that should work as good examples to draw from. |
The
|
Or should the requirements.txt just ask for wheels, since it clearly needs it? @kgaughan
|
@JanneKiiskila No, that wouldn't work. This is, unfortunately, a required dependency of Chalice, and if try to tell pip just to use wheels (which is what you want to do if you just want wheels), it'll fail. That's what's breaking for me. For this to work, there would need to be a wheel built for pyrsistent, and there is none. And I need to force the use of wheels as I'm deploying the lambda from Mac OS, and |
Thanks @johnthagen for contributing to this happening. I've released wheels for 0.17.4rc1 now. It would be great with some testing and feedback before I cut a proper release if anyone has the chance to do so. |
@tobgu I tested install on Windows x64, Python 3.9 and it seems to install correctly:
|
A Linux Docker install also worked. FROM python:3.8-slim-buster
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONBUFFERED 1
ENV PIP_NO_CACHE_DIR 1
ENV WORKDIR /src
WORKDIR ${WORKDIR}
RUN pip install --upgrade pip wheel && \
pip install pyrsistent==0.17.4rc1
ENTRYPOINT ["python"]
|
Wheels (
.whl
) for this package are currently missing from PyPI. Could wheels be uploaded for the current and future releases?Read more about the advantages of wheels to understand why generating wheel distributions are important.
To create a wheel along with source distribution:
(venv) $ pip install --upgrade pip setuptools wheel (venv) $ python setup.py sdist bdist_wheel # See dist/*.whl
To upload wheels:
(venv) $ pip install twine (venv) $ twine upload dist/*
The text was updated successfully, but these errors were encountered: