Differences between revisions 62 and 63
Revision 62 as of 2023-03-31 07:28:15
Size: 5484
Editor: stroth
Comment: Add info about relocation/purging pip cache
Revision 63 as of 2023-03-31 07:35:01
Size: 5791
Editor: stroth
Comment: Add syntax highlighting to all command snippets; Unify inline command highlighting
Deletions are marked like this. Additions are marked like this.
Line 23: Line 23:
 * Install pyenv:
 
{{{
 * Install pyenv: {{{#!highlight bash numbers=disable
Line 27: Line 26:
 Check what the script is doing and then execute it:
{{{
 Check what the script is doing and then execute it: {{{#!highlight bash numbers=disable
Line 32: Line 30:
 * Add the following lines to your `~/.profile` before sourcing ~/.bashrc`:
{{{
 * Add the following lines to your `~/.profile` before sourcing ~/.bashrc`: {{{#!highlight bash numbers=disable
Line 38: Line 35:
 * In the `~/.bashrc`:
{{{
 * In the `~/.bashrc`: {{{#!highlight bash numbers=disable
Line 42: Line 38:
 * If you want to pyenv-virtualenv automatically (in the `~/.bashrc`):
{{{
 * If you want to pyenv-virtualenv automatically (in the `~/.bashrc`): {{{#!highlight bash numbers=disable
Line 49: Line 44:
 * Install some python version, e.g. for python 3.9.1:
{{{
 * Install some python version, e.g. for python 3.9.1: {{{#!highlight bash numbers=disable
Line 55: Line 49:
 * Make sure that this new python version will be used when you run python. You only need to run this command once:
{{{
 * Make sure that this new python version will be used when you run python. You only need to run this command once: {{{#!highlight bash numbers=disable
Line 59: Line 52:
 * In order to update {{{pyenv}}} run:
{{{
 * In order to update `pyenv` run: {{{#!highlight bash numbers=disable
Line 71: Line 63:
{{{ {{{#!highlight bash numbers=disable
Line 74: Line 66:
while the next command would upgrade an existing installation of {{{numpy}}}
{{{
while the next command would upgrade an existing installation of `numpy`
{{{#!highlight bash numbers=disable
Line 108: Line 100:
Here we provide some shell script snippets for installing frequently asked modules which cannot be installed through {{{pip}}}. These scripts just provide an example installation. You might have to adapt some paths in order to make the module work correctly with the version of python you are using (e.g. if you run your custom python provided through `pyenv`). Here we provide some shell script snippets for installing frequently asked modules which cannot be installed through `pip`. These scripts just provide an example installation. You might have to adapt some paths in order to make the module work correctly with the version of python you are using (e.g. if you run your custom python provided through `pyenv`).
Line 111: Line 103:
{{{#!highlight bash {{{#!highlight bash numbers=disable

Python

We provide some modules that come with the current Debian GNU/Linux stable release, but usually this is because they are dependencies of an installed software. For python we strongly recommend to build own python environments with the desired python versions and modules.

Our recommended way to install such environments is trough Conda, alternatively via building an environment via pyenv is as well possible. Additional module can then either be installed by conda itself or trough pip.

Installing your own python environment with Conda

For a detailed overview for conda please follow to the Conda documentation.

Installing your own python versions with pyenv

Pyenv is a collection of tools that allow users to manage different versions of python. In the simplest case you will need it to simply get an installation of python in your user space. Using that custom python installation, you will then be able to install additional modules in a very comfortable way, since you can install them in the "system path" (which is then somewhere within your home).

Documentation on pyenv can be found at https://github.com/pyenv/pyenv

Here is a small howto for installing python 3.9.1 in your home:

  • Install pyenv:

    curl https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer -o pyenv-installer
    

    Check what the script is doing and then execute it:

    bash ./pyenv-installer
    
    You can remove the installer file afterwards.
  • Add the following lines to your ~/.profile before sourcing ~/.bashrc`:

    export PYENV_ROOT="$HOME/.pyenv"
    export PATH="$PYENV_ROOT/bin:$PATH"
    eval "$(pyenv init --path)"
    
  • In the ~/.bashrc:

    eval "$(pyenv init -)"
    
  • If you want to pyenv-virtualenv automatically (in the ~/.bashrc):

    eval "$(pyenv virtualenv-init -)"
    
  • You need a new login shell for all settings to take effect (when logged in on a Desktop environment logoff and login again)
  • Install some python version, e.g. for python 3.9.1:

    env PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install 3.9.1
    pyenv rehash
    

    Note, that settting of PYTHON_CONFIGURE_OPTS="--enable-shared" is needed if you need to link against the libpython shared library.

  • Make sure that this new python version will be used when you run python. You only need to run this command once:

    pyenv global 3.9.1
    
  • In order to update pyenv run:

    pyenv update
    

Documentation of pyenv

Installation of additional or newer modules with pip

Once you installed your custom python with the explanations given above, you are ready to install additional or newer modules the easy way. The usage of pip is very easy. The following command installs the module numpy.

pip install numpy

while the next command would upgrade an existing installation of numpy

pip install --upgrade numpy

For advanced usage of pip, please consult the manuals: https://pip.pypa.io/en/latest/

pip cache

pip uses a cache which is by default stored under ~/.cache/pip or $XDG_CACHE_HOME/pip if it is set to a non-default location. This cache tends to fill up quickly and should occasionally be cleared with

pip cache purge

It is advisable to set the cache's location to the local scratch disk to avoid using up quota:

  1. Create a directory for the cache:

    mkdir -p /scratch/$USER/pip_cache
    
  2. Temporarily set the environment variable to tell pip to use a different cache location:

    export PIP_CACHE_DIR=/scratch/$USER/tmp/
    
  3. or create a configuration file to store the location permanently:

    mkdir -p ~/.config/pip
    cat << EOF > ~/.config/pip/pip.conf
    [global]
    cache-dir = /scratch/<my username>/pip_cache
    EOF
    

    Make sure to replace <my username> with your actual username in pip.conf

  4. Check if the cache location is correct:

    pip cache info
    

Installation of Python modules that are not available in the archives of pip

Here we provide some shell script snippets for installing frequently asked modules which cannot be installed through pip. These scripts just provide an example installation. You might have to adapt some paths in order to make the module work correctly with the version of python you are using (e.g. if you run your custom python provided through pyenv).

nlopt

#!/bin/bash

# Installation script for nlopt library

VERSION=2.3
INSTALLDIR=$HOME/.local
BUILDDIR=/scratch/$USER/nlopt

mkdir -p $BUILDDIR
cd $BUILDDIR

wget "http://ab-initio.mit.edu/nlopt/nlopt-${VERSION}.tar.gz"
tar -xvvzkf nlopt-${VERSION}.tar.gz
cd nlopt-${VERSION}

./configure \
        --enable-shared \
        --prefix=$INSTALLDIR \
        OCT_INSTALL_DIR=$INSTALLDIR/octave/oct \
        M_INSTALL_DIR=$INSTALLDIR/octave/m/ \
        MEX_INSTALL_DIR=$INSTALLDIR/mex \
        GUILE_INSTALL_DIR=$INSTALLDIR/guile

make
make install


CategoryLXSW

Programming/Languages/Python (last edited 2023-11-06 08:33:58 by stroth)