Skip to content
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 multiple wheels in the same package #3848

Closed
nir0s opened this issue Jul 14, 2016 · 7 comments
Closed

Packaging multiple wheels in the same package #3848

nir0s opened this issue Jul 14, 2016 · 7 comments
Labels
auto-locked Outdated issues that have been locked by automation

Comments

@nir0s
Copy link

nir0s commented Jul 14, 2016

So, this isn't much an issue in pip per se as much it is as an idea (yes, I've also posted it in the python-ideas google group. If this doesn't belong here, feel free to delete it.)

As part of my job, I had to provide a way for customers to install plugins in an environment where PyPI isn't accessible. These plugins are sets of Python packages which necessarily depend on one another (i.e. a regular python package with dependencies).

We decided that we want to package sets of wheels together created or downloaded by pip wheel, add relevant metadata, package them together into a single archive (tar.gz or zip) and use the same tool which packs them up to install them later on, on the destination hosts.

We came up with a tool (http://github.com/cloudify-cosmo/wagon) to do just that and that's what we currently use to create and install our plugins.

While wheel solves the problem of generating wheels, there is no single, standard method for taking an entire set of dependencies packaged in a single location and installing them in a different location.

We thought it would be a good idea to propose a PEP for that and wanted to get your feedback before we start writing the proposal.

The logic behind the PEP is that there's a standard for creating a single python package and we would like to propose a layer above it to package multiple python packages either for offline environments or any other requirement a user may have.

We're currently working on a new rearchitected version of that tool to make it more pythonic and clean but the base stays the same.

P.S. You can take a look at the repo (see the rearchitecture branch) and read the README.

I thought this might be relevant as an additional abstraction in pip for creating completely standalone packages.

Does this seem like something that would make sense? Maybe the implementation itself of our tool isn't good enough but the idea still applies? Maybe pip wagon could be a new command which uses pip wheel in the background to create those packages or maybe it should be a feature in wheel itself?

@dholth
Copy link
Member

dholth commented Jul 14, 2016

Ah the old wheels within wheels idea.

@dholth
Copy link
Member

dholth commented Jul 14, 2016

You could try distutils-Sig mailing list.

Do you store the zips uncompressed so they will compress better in the outside archive?

@nir0s
Copy link
Author

nir0s commented Jul 15, 2016

I don't actually. Good idea. I'll open an issue for that.

@dstufft
Copy link
Member

dstufft commented Jul 15, 2016

This would be something like Java's uber-jars yea?

@nir0s
Copy link
Author

nir0s commented Jul 15, 2016

Yup. Exactly like an uber-jar. We also thought about allowing the addition of resources on the wagon level.

@dstufft
Copy link
Member

dstufft commented Sep 7, 2016

I'm going to close this for now, not because I think it's a bad idea but because it's not really actionable at this point in time from pip's POV. We would need a defined standard for a Wagon via a PEP before we could do something with it. That's going to have to go through distutils-sig. Once such a thing exists then we can revisit this idea in pip.

@dstufft dstufft closed this as completed Sep 7, 2016
@nir0s
Copy link
Author

nir0s commented Nov 22, 2016

I posted on distutils-sig and would love to get feedback

https://groups.google.com/forum/#!topic/distutils-sig/Qm_1MrJrJnk

@lock lock bot added the auto-locked Outdated issues that have been locked by automation label Jun 3, 2019
@lock lock bot locked as resolved and limited conversation to collaborators Jun 3, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
auto-locked Outdated issues that have been locked by automation
Projects
None yet
Development

No branches or pull requests

3 participants