Difference between revisions of "Epd canopy"

From relax wiki
Jump to navigation Jump to search
(Forced creation of a TOC - this will improve the formatting on the main page 'Did you know...' section.)
 
(65 intermediate revisions by one other user not shown)
Line 1: Line 1:
 +
__TOC__
 +
 
== Download from ==
 
== Download from ==
 
Download from:<br>
 
Download from:<br>
Line 9: Line 11:
 
http://docs.enthought.com/canopy/quick-start/install_linux.html
 
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''':
+
After installation, it will add to either '''HOME/.bash_profile''' or '''HOME/.profile''' or '''HOME/.bashrc''':
 
<source lang="bash">
 
<source lang="bash">
 
# Added by Canopy installer on 2014-06-09
 
# Added by Canopy installer on 2014-06-09
Line 16: Line 18:
 
</source>
 
</source>
  
It will make a '''bash''' activation script in: '''$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.
  
 
<source lang="bash">
 
<source lang="bash">
Line 58: Line 62:
 
deactivate nondestructive
 
deactivate nondestructive
  
VIRTUAL_ENV="/sbinlab2/software/Enthought/Canopy_64bit/User"
+
VIRTUAL_ENV="$HOME/Enthought/Canopy_64bit/User"
 
export VIRTUAL_ENV
 
export VIRTUAL_ENV
  
Line 64: Line 68:
 
PATH="$VIRTUAL_ENV/bin:$PATH"
 
PATH="$VIRTUAL_ENV/bin:$PATH"
 
export PATH
 
export PATH
 
  
 
# unset PYTHONHOME if set
 
# unset PYTHONHOME if set
Line 103: Line 106:
 
<source lang="bash">
 
<source lang="bash">
 
bash
 
bash
HOMETMP=/sbinlab2/software
 
 
 
#See current python
 
#See current python
 
which python
 
which python
Line 112: Line 113:
 
# Now activate
 
# Now activate
 
VIRTUAL_ENV_DISABLE_PROMPT=1
 
VIRTUAL_ENV_DISABLE_PROMPT=1
source $HOMETMP/Enthought/Canopy_64bit/User/bin/activate
+
source $HOME/Enthought/Canopy_64bit/User/bin/activate
 
 
# If you have issues with LD_LIBRARY_PATH
 
echo $LD_LIBRARY_PATH
 
unset LD_LIBRARY_PATH
 
echo $LD_LIBRARY_PATH
 
  
 
which python
 
which python
 +
which ipython
 
which scons
 
which scons
 
which pip
 
which pip
 
which canopy
 
which canopy
 +
 +
# Start canopy
 +
canopy
 +
</source>
 +
 +
== Make a tcsh activation script ==
 +
If you are using red-hat, the default SHELL is '''/bin/tcsh'''.<br>
 +
The environment variables are setup in '''HOME/.cshrc'''
 +
 +
You could make a '''HOME/.cshrc_epd'''
 +
 +
<source lang="bash">
 +
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
 +
</source>
 +
 +
Then you can at anytime activate the Enthought python by doing
 +
<source lang="bash">
 +
source $HOME/.cshrc_epd
 +
</source>
 +
This can be become more easy, of you add an alias for activating python 'ap'.
 +
<source lang="bash">
 +
echo "alias ap 'source $HOME/.cshrc_epd'" >> $HOME/.cshrc
 +
source $HOME/.cshrc
 +
</source>
 +
You can now at anytime just activate EPD python by doing
 +
<source lang="bash">
 +
ap
 +
ipython
 +
</source>
 +
 +
== 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.<br>
 +
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. <br>
 +
Each user should start this main installation, and be able to have personal python packages. <br>
 +
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'''.<br>
 +
The path to the Canopy installation is: '''/sbinlab2/software/python-enthought-dis/canopy-1.4.0-full-rh5-64'''.
 +
 +
=== Install ===
 +
<source lang="bash">
 +
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
 +
</source>
 +
 +
=== Make tcsh activation script ===
 +
 +
Now we want to make a tcsh activation script.
 +
 +
<source lang="bash">
 +
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'
 +
</source>
 +
 +
Then let us see it, and change the one important line.
 +
<source lang="bash">
 +
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
 +
</source>
 +
 +
=== Add to shared cshrc ===
 +
Let the user ''software''' has a shared '''cshrc''' file, which all users with source from their own '''$HOME/.cshrc''' file.
 +
 +
<source lang="bash">
 +
cat >> $HOME/cshrc << EOF
 +
#--------------------------------------------------------------
 +
#      Enthought Python distribution
 +
#      Canopy
 +
#--------------------------------------------------------------
 +
# Alias 'ap' as activate python.
 +
alias ap 'source $PWD/cshrc_epd'
 +
EOF
 +
</source>
 +
 +
=== Source shared cshrc for all users ===
 +
Each user needs to put in their '''.cshrc''' file
 +
 +
<source lang="bash">
 +
source /sbinlab2/software/cshrc
 
</source>
 
</source>
 +
 +
== Install Minfx and Bmrblib and mpi4py ==
 +
 +
# [[Minfx#Install | Minfx]]
 +
# [[Bmrblib#Install | Bmrblib]]
 +
# [[Mpi4py#Install | Mpi4py]]
 +
 +
== Scripts to run relax ==
 +
See [[Installation_linux#mpi4py | 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
 +
<source lang="bash">
 +
#!/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
 +
</source>
 +
 +
For multi core computations.
 +
<source lang="bash">
 +
#!/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
 +
</source>
 +
 +
== Compile program issues with scons ==
 +
<source lang="bash">
 +
# 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
 +
</source>
 +
 +
=== Python.h ===
 +
<source lang="bash">
 +
[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.
 +
</source>
 +
Then try
 +
<source lang="bash">
 +
#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
 +
</source>
 +
 +
Setting system environment variable '''PYTHON_INCLUDE_DIR''' to point to the dir with '''Python.h''' solved the problem.
 +
 +
=== For MAC ===
 +
==== Python.h ====
 +
<source lang="bash">
 +
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
 +
</source>
 +
 +
==== 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 ====
 +
<source lang="bash">
 +
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
 +
</source>
 +
 +
== See also ==
 +
[[Category:Installation | Installation category]]
 +
[[Category:Installation]]

Latest revision as of 14:18, 15 October 2015

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