4371
Comment:
|
← Revision 17 as of 2022-04-05 00:44:02 ⇥
0
outdated
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
= How to run Sage in a systemwide Python = == Easy Way == Create this `s.py` python script: {{{ import os import re import sys def set_paths(root="/home/ondra/ext/sage"): """ Set paths necessary to import sage. root ... the path to your Sage installation """ python_path = [ root+"/local/lib/python", root+"/local/lib/python2.5/lib-dynload", root+"/local/lib/python2.5/site-packages", ] sys.path = python_path + sys.path paths = { "SAGE_ROOT": root, "SAGE_LOCAL": root+"/local", "DOT_SAGE": "~/.sage/", "SAGE_SERVER": "http://www.sagemath.org/", "PATH": root+"/local/bin:"+os.environ["PATH"], } os.environ.update(paths) def import_sageall(): """ Imports sage by "import sage.all". If it fails, write a helpful message and exit. After executing this method, you can be sure that sage just works, e.g you can do from sage.all import something without worrying. """ try: import sage.all except ImportError, e: if re.match("(.*).so: cannot open shared object file: No such file or directory", e.message): # all seems to be just a LD_LIBRARY_PATH problem in 99% of cases print """\ "import sage.all" failed when importing an .so library, this is most probably an LD_LIBRARY_PATH problem, please set your LD_LIBRARY_PATH and try again, e.g. execute: LD_LIBRARY_PATH=%s/local/lib python %s""" % (os.environ.get("SAGE_ROOT", ""), sys.argv[0]) sys.exit() else: # some other problem raise set_paths() import_sageall() from sage.all import * var("x") e = x**2/3-log(x) print e print integrate(e, x) }}} and try to run it: {{{ $ python s.py "import sage.all" failed when importing an .so library, this is most probably an LD_LIBRARY_PATH problem, please set your LD_LIBRARY_PATH and try again, e.g. execute: LD_LIBRARY_PATH=/home/ondra/ext/sage/local/lib python s.py }}} it tells you the exact command that you need to execute to make it work, so do it: {{{ $ LD_LIBRARY_PATH=/home/ondra/ext/sage/local/lib python s.py 2 x -- - log(x) 3 3 x - x log(x) + -- + x 9 }}} So as you can see from the above, all you have to do is to set the `root` keyword parameter in the script to point to your Sage installation and that's it. The script will tell you the correct command to run itself. == Robust Way == Create the `run_sage` bash script: {{{ #! /bin/bash export SAGE_ROOT=/home/ondra/ext/sage export SAGE_LOCAL=$SAGE_ROOT/local export DOT_SAGE=~/.sage/ export PATH=$SAGE_ROOT/local/bin:$PATH export LD_LIBRARY_PATH="$SAGE_ROOT/local/lib/openmpi:$SAGE_ROOT/local/lib/:" export PYTHONPATH="$SAGE_ROOT/local/bin:$SAGE_ROOT/local/lib/python2.5/site-packages/setuptools-0.6c8-py2.5.egg:$SAGE_ROOT/local/lib/python2.5/site-packages/SQLAlchemy-0.4.3-py2.5.egg:$SAGE_ROOT/local/bin:$SAGE_ROOT/local/lib/python:$SAGE_ROOT/local/lib/python25.zip:$SAGE_ROOT/local/lib/python2.5/plat-linux2:$SAGE_ROOT/local/lib/python2.5/lib-tk:$SAGE_ROOT/local/lib/python2.5/lib-dynload:$SAGE_ROOT/local/lib/python2.5/site-packages:$SAGE_ROOT/local/lib/python2.5/site-packages/IPython/Extensions" ipython }}} Then: {{{ $ ./run_sage Python 2.5.1 (r251:54863, Mar 29 2008, 09:29:46) Type "copyright", "credits" or "license" for more information. IPython 0.8.1 -- An enhanced Interactive Python. ? -> Introduction to IPython's features. %magic -> Information about IPython's 'magic' % functions. help -> Python's own help system. object? -> Details about 'object'. ?object also works, ?? prints more. In [1]: from sage.all import * Falling back to a hard coded sage server in misc/hg.py In [2]: var("x") Out[2]: x In [3]: x**2/4 + log(x) Out[3]: log(x) + x^2/4 }}} |