Epd canopy

From relax wiki
Jump to navigation Jump to search

Download from

Download from:
https://www.enthought.com/downloads/

Sign-up using a university email, to get access to academic version.

After installation

Information about how the PATH is setup, is seen here:
http://docs.enthought.com/canopy/quick-start/install_linux.html

After installation, it will add to either HOME/.bash_profile or HOME/.profile or HOME/.bashrc:

# Added by Canopy installer on 2014-06-09
# VIRTUAL_ENV_DISABLE_PROMPT can be set to '' to make bashprompt show that Canopy is active, otherwise 1
VIRTUAL_ENV_DISABLE_PROMPT=1 source $HOME/Enthought/Canopy_64bit/User/bin/activate

It will make a bash activation script in: HOME/Enthought/Canopy_64bit/User/bin/activate

That will make an activation source file.

# This file must be used with "source bin/activate" *from bash*
# you cannot run it directly

deactivate () {
    # reset old environment variables
    if [ -n "$_OLD_VIRTUAL_PATH" ] ; then
        PATH="$_OLD_VIRTUAL_PATH"
        export PATH
        unset _OLD_VIRTUAL_PATH
    fi
    if [ -n "$_OLD_VIRTUAL_PYTHONHOME" ] ; then
        PYTHONHOME="$_OLD_VIRTUAL_PYTHONHOME"
        export PYTHONHOME
        unset _OLD_VIRTUAL_PYTHONHOME
    fi

    # This should detect bash and zsh, which have a hash command that must
    # be called to get it to forget past commands.  Without forgetting
    # past commands the $PATH changes we made may not be respected
    if [ -n "$BASH" -o -n "$ZSH_VERSION" ] ; then
        hash -r
    fi

    if [ -n "$_OLD_VIRTUAL_PS1" ] ; then
        PS1="$_OLD_VIRTUAL_PS1"
        export PS1
        unset _OLD_VIRTUAL_PS1
    fi

    unset VIRTUAL_ENV
    if [ ! "$1" = "nondestructive" ] ; then
    # Self destruct!
        unset -f deactivate
    fi
}

# unset irrelavent variables
deactivate nondestructive

VIRTUAL_ENV="$HOME/Enthought/Canopy_64bit/User"
export VIRTUAL_ENV

_OLD_VIRTUAL_PATH="$PATH"
PATH="$VIRTUAL_ENV/bin:$PATH"
export PATH

# unset PYTHONHOME if set
# this will fail if PYTHONHOME is set to the empty string (which is bad anyway)
# could use `if (set -u; : $PYTHONHOME) ;` in bash
if [ -n "$PYTHONHOME" ] ; then
    _OLD_VIRTUAL_PYTHONHOME="$PYTHONHOME"
    unset PYTHONHOME
fi

if [ -z "$VIRTUAL_ENV_DISABLE_PROMPT" ] ; then
    _OLD_VIRTUAL_PS1="$PS1"
    if [ "x(Canopy 64bit) " != x ] ; then
	PS1="(Canopy 64bit) $PS1"
    else
    if [ "`basename \"$VIRTUAL_ENV\"`" = "__" ] ; then
        # special case for Aspen magic directories
        # see http://www.zetadev.com/software/aspen/
        PS1="[`basename \`dirname \"$VIRTUAL_ENV\"\``] $PS1"
    else
        PS1="(`basename \"$VIRTUAL_ENV\"`)$PS1"
    fi
    fi
    export PS1
fi

# This should detect bash and zsh, which have a hash command that must
# be called to get it to forget past commands.  Without forgetting
# past commands the $PATH changes we made may not be respected
if [ -n "$BASH" -o -n "$ZSH_VERSION" ] ; then
    hash -r
fi

Test in bash

Jusy try by:

bash
#See current python
which python
which scons
which pip

# Now activate
VIRTUAL_ENV_DISABLE_PROMPT=1
source $HOME/Enthought/Canopy_64bit/User/bin/activate

which python
which ipython
which scons
which pip
which canopy

# Start canopy
canopy

Make a tcsh activation script

If you are using red-hat, the default SHELL is /bin/tcsh.
The environment variables are setup in HOME/.cshrc

You could make a HOME/.cshrc_epd

set VIRTUAL_ENV_DISABLE_PROMPT=1

# unset irrelavent variables
set METHOD=nondestructive

if ( $?_OLD_VIRTUAL_PATH ) then
    set PATH=$_OLD_VIRTUAL_PATH
    setenv PATH $PATH
    unset _OLD_VIRTUAL_PATH
endif

if ( $?_OLD_VIRTUAL_PYTHONHOME ) then
    set PYTHONHOME=$_OLD_VIRTUAL_PYTHONHOME
    setenv PYTHONHOME $PYTHONHOME
    unset _OLD_VIRTUAL_PYTHONHOME
endif

if ( $?_OLD_VIRTUAL_PS1) then
    set PS1=$_OLD_VIRTUAL_PS1
    setenv PS1 $PS1
    unset _OLD_VIRTUAL_PS1
endif

unset VIRTUAL_ENV

set VIRTUAL_ENV=$HOME/Enthought/Canopy_64bit/User
setenv VIRTUAL_ENV $VIRTUAL_ENV

set _OLD_VIRTUAL_PATH=$PATH
set PATH=$VIRTUAL_ENV/bin:$PATH
setenv PATH $PATH

# unset PYTHONHOME if set
# this will fail if PYTHONHOME is set to the empty string (which is bad anyway)
# could use `if (set -u; : $PYTHONHOME) ;` in bash
if ( $?PYTHONHOME ) then
    set _OLD_VIRTUAL_PYTHONHOME=$PYTHONHOME
    unset PYTHONHOME
endif

if ( ! $?VIRTUAL_ENV_DISABLE_PROMPT ) then
    set _OLD_VIRTUAL_PS1=$PS1

    if ( "x(Canopy 64bit) " != x ) then
        set PS1="(Canopy 64bit) $PS1"
    else if ( `basename $VIRTUAL_ENV` = "__" ) then
        # special case for Aspen magic directories
        # see http://www.zetadev.com/software/aspen/
        set DIRN=`dirname $VIRTUAL_ENV`
        set BN=`basename $DIRN`
        set PS1="$BN $PS1"
    else
        set PS1="(`basename $VIRTUAL_ENV`)$PS1"
    endif

    #setenv PS1 $PS1
endif

Then you can at anytime activate the Enthought python by doing

source $HOME/.cshrc_epd

This can be become more easy, of you add an alias for activating python 'ap'.

echo "alias ap 'source $HOME/.cshrc_epd'" >> $HOME/.cshrc
source $HOME/.cshrc

You can now at anytime just activate EPD python by doing

ap
ipython

Installing and managing a central python install with enthought canopy

http://blog.enthought.com/python/installing-and-managing-a-central-python-install-with-enthought-canopy-v1-1/

Say, that you work in research group, which have a commen file system for their users.
You may have personal computers, a central file server, and maybe one computer server with muscles.

You would like to make one common large file size installation for EPD, on the file server.
Each user should start this main installation, and be able to have personal python packages.
In this way, the server admin can save space on network storage, and users can install personal python packages for their convenience.

The user who holds the shared software is called: software.
The path to the Canopy installation is: /sbinlab2/software/python-enthought-dis/canopy-1.4.0-full-rh5-64.

Install

tcsh

# Set variables
set INUSER=software
# Change to software user
su $INUSER

set IND=/sbinlab2/software/python-enthought-dis/canopy-1.4.0-full-rh5-64
cd $IND
# Maybe remove already installed Enthought
rm -rf $HOME/Enthought/
rm -rf $HOME/.canopy

# Install
canopy_cli -h
canopy_cli --common-install --no-gui-setup --install-dir $PWD

Make tcsh activation script

Now we want to make a tcsh activation script.

cat > cshrc_epd << 'EOF'
set VIRTUAL_ENV_DISABLE_PROMPT=1

# unset irrelavent variables
if ( $?_OLD_VIRTUAL_PATH ) then
    set PATH=$_OLD_VIRTUAL_PATH
    setenv PATH $PATH
    unset _OLD_VIRTUAL_PATH
endif

if ( $?_OLD_VIRTUAL_PYTHONHOME ) then
    set PYTHONHOME=$_OLD_VIRTUAL_PYTHONHOME
    setenv PYTHONHOME $PYTHONHOME
    unset _OLD_VIRTUAL_PYTHONHOME
endif

if ( $?_OLD_VIRTUAL_PS1) then
    set PS1=$_OLD_VIRTUAL_PS1
    setenv PS1 $PS1
    unset _OLD_VIRTUAL_PS1
endif

unset VIRTUAL_ENV

set VIRTUAL_ENV=MYINSTALLDIR
setenv VIRTUAL_ENV $VIRTUAL_ENV

set _OLD_VIRTUAL_PATH=$PATH
set PATH=$VIRTUAL_ENV/bin:$PATH
setenv PATH $PATH

# unset PYTHONHOME if set
# this will fail if PYTHONHOME is set to the empty string (which is bad anyway)
# could use `if (set -u; : $PYTHONHOME) ;` in bash
if ( $?PYTHONHOME ) then
    set _OLD_VIRTUAL_PYTHONHOME=$PYTHONHOME
    unset PYTHONHOME
endif

if ( ! $?VIRTUAL_ENV_DISABLE_PROMPT ) then
    set _OLD_VIRTUAL_PS1=$PS1

    if ( "x(Canopy 64bit) " != x ) then
        set PS1="(Canopy 64bit) $PS1"
    else if ( `basename $VIRTUAL_ENV` = "__" ) then
        # special case for Aspen magic directories
        # see http://www.zetadev.com/software/aspen/
        set DIRN=`dirname $VIRTUAL_ENV`
        set BN=`basename $DIRN`
        set PS1="$BN $PS1"
    else
        set PS1="(`basename $VIRTUAL_ENV`)$PS1"
    endif

    #setenv PS1 $PS1
endif
'EOF'

Then let us see it, and change the one important line.

set EPDUSER=$PWD/Canopy_64bit/User
# Sed can use any separator instead of / in the s command. Just use something that is not encountered in the path: s+AAA+BBB+
sed -i "s+MYINSTALLDIR+$EPDUSER+g" cshrc_epd
grep "set VIRTUAL_ENV" cshrc_epd

Add to shared cshrc

Let the user software' has a shared cshrc file, which all users with source from their own $HOME/.cshrc file.

cat >> $HOME/cshrc << EOF
#--------------------------------------------------------------
#      Enthought Python distribution
#      Canopy
#--------------------------------------------------------------
# Alias 'ap' as activate python.
alias ap 'source $PWD/cshrc_epd'
EOF

Source shared cshrc for all users

Each user needs to put in their .cshrc file

source /sbinlab2/software/cshrc

Install Minfx and Bmrblib and mpi4py

  1. Minfx
  2. Bmrblib
  3. Mpi4py

Scripts to run relax

See linux mpi4py installtion if you want to run multi processor mode.

Here we have one computer, with 24 cores, called haddock. We want to have the users logon on to haddock, when they want to do multi-core calculations.

Make these scripts available somewhere in PATH.

For private single computer

#!/bin/tcsh

# Set the lax version used for this script.
set RELAX=/sbinlab2/software/NMR-relax/relax_trunk/relax

# Run relax in multi processor mode.
set RELAXRUN="$RELAX $argv"

# Activate python
ap
$RELAX $argv

For multi core computations.

#!/bin/tcsh

# Set the lax version used for this script.
set RELAX=/sbinlab2/software/NMR-relax/relax_trunk/relax

# Set number of available CPUs.
#set NPROC=`nproc`
set NPROC=5
set NP=`echo $NPROC + 1 | bc `

# Run relax in multi processor mode.
set RELAXRUN="/usr/lib64/openmpi/bin/mpirun -np $NP $RELAX --multi='mpi4py' $argv"

# Check machine, since only machine haddock have openmpi-devel installed
if ( $HOST != "haddock") then
    echo "You have to run on haddock. I do it for you"
    ssh haddock -Y -t "cd $PWD; ap; $RELAXRUN; /bin/tcsh"
else
    # Activate python
    ap
    /usr/lib64/openmpi/bin/mpirun -np $NP $RELAX --multi='mpi4py' $argv
endif

Compile program issues with scons

# Go into install directory
tcsh
set IND=/sbinlab2/software/python-enthought-dis/canopy-1.4.0-full-rh5-64
cd $IND
 
# setenv PYTHON_LIBRARY XXXXX/libpython2.7.so
# libpython2.7.so
find . -name libpython2.7.so -type f
./appdata/canopy-1.4.0.1938.rh5-x86_64/lib/libpython2.7.so
./appdata/canopy-1.4.0.1938.rh5-x86_64/lib/python2.7/config/libpython2.7.so
./Canopy_64bit/User/lib/libpython2.7.so
./Canopy_64bit/System/lib/libpython2.7.so
 
# setenv PYTHON_EXECUTABLE XXXXX/python2.7
# find . -name python\*
# find . -name python -type f
# find . -name python2.7 -type f
./appdata/canopy-1.4.0.1938.rh5-x86_64/bin/python2.7
./Canopy_64bit/User/bin/python
./Canopy_64bit/User/bin/python2.7
./Canopy_64bit/System/bin/python
./Canopy_64bit/System/bin/python2.7
 
# setenv PYTHON_INCLUDE_DIR XXXX/
# find . -name Python.h -type f
./appdata/canopy-1.4.0.1938.rh5-x86_64/include/python2.7/Python.h

Python.h

[tlinnet@tomat disp_spin_speed]$ scons
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
gcc -o target_functions/relax_fit.os -c -I/sbinlab2/software/python-enthought-dis/canopy-1.4.0-full-rh5-64/Canopy_64bit/User/include/python2.7 -fPIC target_functions/relax_fit.c
target_functions/relax_fit.c:21:20: error: Python.h: No such file or directory
target_functions/relax_fit.c:30: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token
target_functions/relax_fit.c:79: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token
target_functions/relax_fit.c:117: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token
target_functions/relax_fit.c:142: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token
target_functions/relax_fit.c:153: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token
target_functions/relax_fit.c:171: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'relax_fit_methods'
target_functions/relax_fit.c: In function 'initrelax_fit':
target_functions/relax_fit.c:227: error: 'relax_fit_methods' undeclared (first use in this function)
target_functions/relax_fit.c:227: error: (Each undeclared identifier is reported only once
target_functions/relax_fit.c:227: error: for each function it appears in.)
scons: *** [target_functions/relax_fit.os] Error 1
scons: building terminated because of errors.

Then try

#setenv PYTHON_LIBRARY $IND/appdata/canopy-1.4.0.1938.rh5-x86_64/lib/libpython2.7.so
#setenv PYTHON_EXECUTABLE $IND/appdata/canopy-1.4.0.1938.rh5-x86_64/bin/python2.7
setenv PYTHON_INCLUDE_DIR $IND/appdata/canopy-1.4.0.1938.rh5-x86_64/include/python2.7

Setting system environment variable PYTHON_INCLUDE_DIR to point to the dir with Python.h solved the problem.

For MAC

Python.h

echo "PYTHON_INCLUDE_DIR=/Applications/Canopy.app/appdata/canopy-1.4.0.1938.macosx-x86_64/Canopy.app/Contents/include/python2.7" >> $HOME/.bash_profile

echo "export PYTHON_INCLUDE_DIR" >> $HOME/.bash_profile

Wx program running on Canopy 1.4 on OS X "Please run with a Framework build of python"

See https://support.enthought.com/entries/22601196-wxPython-2-8-and-2-9 to fix it.

For Linux

Python.h

setenv PYTHON_INCLUDE_DIR /sbinlab2/software/python-enthought-dis/canopy-1.4.0-full-rh5-64/appdata/canopy-1.4.1.1975.rh5-x86_64/include/python2.7

# Or
cd /sbinlab2/software/python-enthought-dis/canopy-1.4.0-full-rh5-64/appdata/canopy-1.4.1.1975.rh5-x86_64/include
ln -s /sbinlab2/software/python-enthought-dis/canopy-1.4.0-full-rh5-64/appdata/canopy-1.4.1.1975.rh5-x86_64/include/python2.7 python2.7

See also