-
Notifications
You must be signed in to change notification settings - Fork 205
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
Packaging Question #368
Comments
Hi Adam, |
Hi Stefan, I am open to distributing through conda instead of PyPi, but it's not my top choice. I've used Conda quite a bit as a consumer (not as a package creator) and I'm always frustrated by the difficulty of managing dependencies through it. Some of the packages I use are only distributed through PyPI and inevitably, the conda solver breaks and only provides limited information on how to fix the situation. Because of many lost hours trying to fix broken environments, I recently switched to managing my dev environments through Poetry and exclusively using Pip (through Poetry's solver). It's been a total game-changer in terms of creating reproducible dev environments. That said, if it's way easier to do this kind of thing from conda, I will gladly switch back. It's all about cost vs. benefit for me and having this library be easily installable for future work would be a huge benefit :) Do you have any suggestions on how to get started packaging a library with Boost.Python for conda? [EDIT] I see you were a developer for Continuum! I hope nothing I said came off as rude 🤦♂️. I think it's a great product--I've just run into the edges a few too many times |
I suppose the difficulties you encountered with conda stem from the complexity of the problem, not the implementation. I don't have any specific examples, unfortunately, but I'm sure you are not the first person wanting to distribute a Python package that requires Boost.Python. :-) |
This all makes sense. I'll do some searching around for Conda examples and see what I can find. |
This reflects a pattern of @boostorg dismissing the python ecosystem. I'm very frustrated by this pattern.
Yet boost.python and boost.build make it difficult to follow officially-supported python standards. boost.build offers no integration with In the threads I linked above, there's been simply no response from @boostorg. In this thread, the response is to dismiss official standards rather than trying to solve the problem. This might be fine, if @boostorg provided guidance for packaging and distribution outside the norms of the python ecosystem, but I've seen no such guidance in months of searching. I know I risk being rude here. But users are already making noise about packaging issues, and there has been no recognition, so I believe that additional noise is warranted. |
@fishbotics: check out https://github.com/arvidn/libtorrent/blob/RC_2_0/bindings/python/setup.py . We integrate It looks like the project you linked is cmake-based, so you wouldn't need a lot of the logic, but you could still use it as a starting point. |
Thank you @AllSeeingEyeTolledEweSew. I appreciate your fervor, even if it may seem rude to @boostorg. For now, I ended up just throwing all my dev work using this library into a docker container and using that as "packaging." It's a terrible solution, but has been a reasonable temporary band-aid. I'll take a look at the repo you linked and try to piece something together. |
Hi all,
I am using a library built on Boost.Python as a dependency for some of my other projects. This library (https://github.com/ompl/ompl) requires building from source and is always linked to the system Python. I would like to make it installable via pip and distribute it on PyPi. My biggest question around this is how to handle Boost.Python. When I look at the generated shared object files, they are linked to a Python-version-specific version of Boost. Namely, I see
I'm wondering what is the best practice for distributing a pre-built package like this? Should I statically link to a particular version of Boost.Python? Assuming I only handle Linux support to start, I don't mind asking them to use
apt
to install Boost. But, I'd like to enable support across multiple Python versions. If, for example, they are running Ubuntu 20.04, which has system Python version of 3.8, libboost-python-dev seems to install the 3.8-specific version. Would I have to include the entire boost source code and build from scratch when they runpip install
?I'd love to learn by example, but I haven't been able to find any PyPi-distributed packages that use Boost.Python. Can anyone point me to one?
Thanks a lot for your help!
The text was updated successfully, but these errors were encountered: