Background
One can often use pre-built python distributions to setup python working environments, for example Anaconda, Enthought Canopy. But these distributions has the following common problems, which reduces their usefulness:
-
It’s hard to upgrade packages without internet connections. It’s also hard to install packages not contained in the distribution.
-
It does not play well with existing packages on the target systems. For example, Anaconda bundles mpich, which conflict with system MPIs.
-
These distributions has poor performances. Since they are built on relatively old platforms and possibly with no optimizations, they are often slower than native python. For example, I found anaconda python on a RHEL 6.3 system very slow to start.
For me, it’s essential to deploy my python working environments with the following considerations:
-
Easy to install/upgrade packages on demand, under restricted connections. Some systems I work with does not have internet connections.
-
It shall integrate well with existing python packages. Some packages such as PyQt5 requires deep system integration so I would better install them with system package manager.
-
Good performance. The distributed packages shall run fast and be responsive on the target platform.