[Openstack-operators] Packaging Virtualenvs

Doug Hellmann doug at doughellmann.com
Thu Jun 23 21:12:07 UTC 2016


Excerpts from Silence Dogood's message of 2016-06-23 15:45:34 -0400:
> I know from conversations that a few folks package their python apps as
> distributable virtualenvs.   spotify created dh-virtualenv for this.  you
> can do it pretty simply by hand.
> 
> I built a toolchain for building rpms as distributable virtualenvs and that
> works really well.
> 
> What I'd like to do is make it so that every app that's built as a
> virtualenv gets setup to automatically execute at call time in their
> virtualenv.
> 
> I see two options:
> 
> 1)  Dynamically generate a wrapper script during build and put it in the
> RPM.  Call the wrapper.
> 
> 2)  Created a dependency global module ( as an rpm ) set it as a
> dependency.  And basically it'd be an autoexecuting import that
> instantiates the virtualenv.  it would probably know all it needs to
> because I am building all my packages to an internal standard.  Then when
> building the APP rpm all I need to do is inject an import into the import
> chain if it's being built as a virtualenv.  Then I have what are
> effectively statically compiled python apps.
> 
> I like 2.  But 1 isn't very bad.  Both are a little hokey.
> 
> Was curious if folks might have a preference, or a better idea.
> 
> Thanks.
> 
> Matt

I'm not sure what you mean by a "wrapper script".  If you run the
Python console script from within the virtualenv you've packaged,
you shouldn't need to do anything to "activate" that environment
separately because it should have the correct shebang line.

Are you seeing different behavior?

Doug



More information about the OpenStack-operators mailing list