[Server-devel] [XSCE] Install python applications in a virtualenv without system wide packages using wheel binary package format

Miguel González migonzalvar at activitycentral.com
Mon Dec 16 11:17:22 EST 2013


I want to share with you my proposed approach to install Python web
application in XSCE.


The idea is to install them into a Python virtual environment isolated
from the system wide packages installed.

If you are not familiar with Python virtualenvs, it's just a similar
concept than a chroot.  It creates a new folder structure and makes
symlinks to Python executable and libraries.  It also disables system
site-packages allowing to install different ones.  To use the
environment it must be activated.

Some advantages to this approach are:

- **Isolated dependencies**.  Each application can have its own
requirements, for example two applications can have different Django
versions.  Also it allows a clean remove procedure because modules and
application source code are in the same dir.

- It is a **standard solution** described in PEP 405 [1].  There are
available great tools with excellent support.  For example, pip and
pip's ansible module support virtualenvs.

As disadvantages:

- This approach uses **more space in disk** as site packages are
installed once per application.  For example Django 1.4.5 uses 45MB.

- **rpm packages can't be used** to install Python packages in a
virtualenv.  That would require to compile binary packages.  That
means more time and, more annoying, the system would need development
libraries.


I have nothing to say about disk space but, to counteract the
compilation problem I propose to use the wheel binary package format
[2][3].

The tradeoff is that we would need to provide those packages so
compiling the packages for every library and every architecture.


My test has succeed with pathagar so far.  I have written recipes to
create wheel packages [4] and to deploy a web application in a XSCE
using them [5]. I've even created a wheels repository with ARM
packages for psycopg2 and SQLAlchemy [6].


if you have any doubts, concerns, comments, please share them with me,
I'd really appreciate any kind of feedback.


Links:

[1] http://www.python.org/dev/peps/pep-0405/

[2] http://wheel.readthedocs.org/en/latest/

[3] http://www.python.org/dev/peps/pep-0427/

[4] http://migonzalvar.eu/pip-installing-using-wheels.html

[5] http://migonzalvar.eu/deploying-a-web-application-into-a-virtualenv-using-wheel-packages.html

[6] http://xsce.activitycentral.com/wheelhouse/



-- 
Miguel González
Activity Central: http://www.activitycentral.com


More information about the Server-devel mailing list