def getEnviron(): """ Load the environment variables needed for Spider. If SPIDER_DIR is defined, the bin, man and proc folders will be defined from it. If not, each of them should be defined separately. """ global SPIDER env = Environ(os.environ) SPIDER_PATH = env.getFirst((SPIDER_HOME, SPIDER_DIR), mandatory=True) # # Scipion # definition # env.setInstalled(os.path.exists(SPIDER_DIR)) if SPIDER_PATH is None: errors = '' for var in [SPBIN_DIR, SPMAN_DIR, SPPROC_DIR]: if not var in env: errors += "\n Missing SPIDER variable: '%s'" % var if len(errors): print "ERRORS: " + errors else: env.update({SPBIN_DIR: join(SPIDER_PATH, 'bin') + '/', # Spider needs this extra slash at the end SPMAN_DIR: join(SPIDER_PATH, 'man') + '/', SPPROC_DIR: join(SPIDER_PATH, 'proc') + '/' }) # Get the executable or 'spider' by default SPIDER = join(env[SPBIN_DIR], env.get('SPIDER', 'spider_linux_mp_intel64')) # expand ~ and vars SPIDER = abspath(os.path.expanduser(os.path.expandvars(SPIDER))) env.set('PATH', env[SPBIN_DIR], env.END) return env
def getEnviron(cls): """ Load the environment variables needed for Imagic. IMAGIC_ROOT is set to IMAGIC_HOME MPI-related vars are set if IMAGIC_HOME/openmpi path exists IMAGIC_BATCH is needed for batch files to work. """ env = Environ(os.environ) env.update({ 'IMAGIC_ROOT': cls.getHome(), 'IMAGIC_BATCH': "1", }) env.set('LD_LIBRARY_PATH', cls.getHome('lib'), env.BEGIN) mpidir = cls.getHome('openmpi') if os.path.exists(mpidir): env.update({ 'MPIHOME': mpidir, 'MPIBIN': mpidir + '/bin', 'OPAL_PREFIX': mpidir }) env.set('PATH', mpidir + '/bin', env.BEGIN) else: print("Warning: IMAGIC_ROOT directory (", cls.getHome(), ") does not contain openmpi folder.\n", "No MPI support will be enabled.") return env
def getVmdEnviron(): """ Return the proper environ to launch VMD. VMD_HOME variable is read from the ~/.config/scipion.conf file. """ environ = Environ(os.environ) environ.set("PATH", os.path.join(os.environ["VMD_HOME"], "bin"), position=Environ.BEGIN) return environ
def test_Environ(self): """ Test the Environ class with its utilities. """ from pyworkflow.utils import Environ env = Environ({ 'PATH': '/usr/bin:/usr/local/bin', 'LD_LIBRARY_PATH': '/usr/lib:/usr/lib64' }) env1 = Environ(env) env1.set('PATH', '/usr/local/xmipp') self.assertEqual(env1['PATH'], '/usr/local/xmipp') self.assertEqual(env1['LD_LIBRARY_PATH'], env['LD_LIBRARY_PATH']) env2 = Environ(env) env2.set('PATH', '/usr/local/xmipp', position=Environ.BEGIN) self.assertEqual(env2['PATH'], '/usr/local/xmipp' + os.pathsep + env['PATH']) self.assertEqual(env2['LD_LIBRARY_PATH'], env['LD_LIBRARY_PATH']) env3 = Environ(env) env3.update( { 'PATH': '/usr/local/xmipp', 'LD_LIBRARY_PATH': '/usr/local/xmipp/lib' }, position=Environ.END) self.assertEqual(env3['PATH'], env['PATH'] + os.pathsep + '/usr/local/xmipp') self.assertEqual( env3['LD_LIBRARY_PATH'], env['LD_LIBRARY_PATH'] + os.pathsep + '/usr/local/xmipp/lib')
def getEnviron(): """ Load the environment variables needed for Spider. If SPIDER_DIR is defined, the bin, man and proc folders will be defined from it. If not, each of them should be defined separately. """ global SPIDER env = Environ(os.environ) SPIDER_DIR = env.getFirst(('SPIDER_HOME', 'SPIDER_DIR'), mandatory=True) # # Scipion # definition if SPIDER_DIR is None: errors = '' for var in ['SPBIN_DIR', 'SPMAN_DIR', 'SPPROC_DIR']: if not var in env: errors += "\n Missing SPIDER variable: '%s'" % var if len(errors): print "ERRORS: " + errors else: env.update({ 'SPBIN_DIR': join(SPIDER_DIR, 'bin') + '/', # Spider needs this extra slash at the end 'SPMAN_DIR': join(SPIDER_DIR, 'man') + '/', 'SPPROC_DIR': join(SPIDER_DIR, 'proc') + '/' }) # Get the executable or 'spider' by default SPIDER = join(env['SPBIN_DIR'], env.get('SPIDER', 'spider_linux_mp_intel64')) # expand ~ and vars SPIDER = abspath(os.path.expanduser(os.path.expandvars(SPIDER))) env.set('PATH', env['SPBIN_DIR'], env.END) return env
def getChimeraEnviron(): """ Return the proper environ to launch chimera. CHIMERA_HOME variable is read from the ~/.config/scipion.conf file. """ environ = Environ(os.environ) environ.set('PATH', os.path.join(os.environ['CHIMERA_HOME'], 'bin'), position=Environ.BEGIN) return environ
def getVmdEnviron(): """ Return the proper environ to launch VMD. VMD_HOME variable is read from the ~/.config/scipion.conf file. """ environ = Environ(os.environ) environ.set('PATH', os.path.join(os.environ['VMD_HOME'], 'bin'), position=Environ.BEGIN) return environ
def getChimeraEnviron(): """ Return the proper environ to launch chimera. CHIMERA_HOME variable is read from the ~/.config/scipion.conf file. """ environ = Environ(os.environ) environ.set('PATH', os.path.join(os.environ['CHIMERA_HOME'], 'bin'), position=Environ.BEGIN) if "REMOTE_MESA_LIB" in os.environ: environ.set('LD_LIBRARY_PATH', os.environ['REMOTE_MESA_LIB'], position=Environ.BEGIN) return environ
def getEnviron(cls): """ Load the environment variables needed for Spider. If SPIDER_HOME is defined, the bin, man and proc folders will be defined from it. If not, each of them should be defined separately. """ env = Environ(os.environ) if cls.getHome(): env.update( # Spider needs this extra slash at the end {SPBIN_DIR: cls.getHome('spider/bin') + '/', SPMAN_DIR: cls.getHome('spider/man') + '/', SPPROC_DIR: cls.getHome('spider/proc') + '/'}) else: errors = '' for var in [SPBIN_DIR, SPMAN_DIR, SPPROC_DIR]: if var not in env: errors += "\n Missing SPIDER variable: '%s'" % var if len(errors): print("ERRORS: " + errors) env.set('PATH', env[SPBIN_DIR], env.END) return env
def getEnviron(cls): """ Setup the environment variables needed to launch Relion. """ environ = Environ(os.environ) binPath = os.pathsep.join([cls.getHome('bin'), Config.MPI_BINDIR]) libPath = os.pathsep.join([cls.getHome('lib'), cls.getHome('lib64'), pwem.Config.MPI_LIBDIR]) if binPath not in environ['PATH']: environ.update({'PATH': binPath, 'LD_LIBRARY_PATH': libPath }, position=Environ.BEGIN) # Get Relion CUDA library path if defined cudaLib = cls.getVar(RELIONTOMO_CUDA_LIB, pwem.Config.CUDA_LIB) environ.addLibrary(cudaLib) if 'RELION_MPI_LIB' in os.environ: environ.addLibrary(os.environ['RELION_MPI_LIB']) if 'RELION_MPI_BIN' in os.environ: environ.set('PATH', os.environ['RELION_MPI_BIN'], position=Environ.BEGIN) return environ
def test_Environ(self): """ Test the Environ class with its utilities. """ from pyworkflow.utils import Environ env = Environ({'PATH': '/usr/bin:/usr/local/bin', 'LD_LIBRARY_PATH': '/usr/lib:/usr/lib64' }) env1 = Environ(env) env1.set('PATH', '/usr/local/xmipp') self.assertEqual(env1['PATH'],'/usr/local/xmipp') self.assertEqual(env1['LD_LIBRARY_PATH'], env['LD_LIBRARY_PATH']) env2 = Environ(env) env2.set('PATH', '/usr/local/xmipp', position=Environ.BEGIN) self.assertEqual(env2['PATH'],'/usr/local/xmipp' + os.pathsep + env['PATH']) self.assertEqual(env2['LD_LIBRARY_PATH'], env['LD_LIBRARY_PATH']) env3 = Environ(env) env3.update({'PATH': '/usr/local/xmipp', 'LD_LIBRARY_PATH': '/usr/local/xmipp/lib'}, position=Environ.END) self.assertEqual(env3['PATH'],env['PATH'] + os.pathsep + '/usr/local/xmipp') self.assertEqual(env3['LD_LIBRARY_PATH'],env['LD_LIBRARY_PATH'] + os.pathsep + '/usr/local/xmipp/lib')