Are you on Fedora 26? Then it looks like this: It looks like you hit this bug: https://bugzilla.redhat.com/show_bug.cgi?id=1464520
You need to install psutils: $ dnf install python2-psutil On Friday, October 6, 2017 at 4:34:09 PM UTC+1, Lee Duke wrote: > > *************************************************************************** > > > IPython post-mortem report > > {'commit_hash': u'5c9c918', > 'commit_source': 'installation', > 'default_encoding': 'UTF-8', > 'ipython_path': '/usr/lib64/sagemath/site-packages/IPython', > 'ipython_version': '5.1.0', > 'os_name': 'posix', > 'platform': > 'Linux-4.12.9-300.fc26.x86_64-x86_64-with-fedora-26-Twenty_Six', > 'sys_executable': '/usr/lib64/sagemath/local/bin/python', > 'sys_platform': 'linux2', > 'sys_version': '2.7.13 (default, Sep 5 2017, 08:53:59) \n[GCC 7.1.1 > 20170622 (Red Hat 7.1.1-3)]'} > > *************************************************************************** > > > > > *************************************************************************** > > > Crash traceback: > > --------------------------------------------------------------------------- > > --------------------------------------------------------------------------- > > ImportError Python 2.7.13: > /usr/lib64/sagemath/local/bin/python > Fri Oct 6 11:28:35 > 2017 > A problem occurred executing Python code. Here is the sequence of > function > calls leading up to the error, with the most recent (innermost) call last. > /usr/lib64/sagemath/local/bin/sage-ipython in <module>() > 1 #!/usr/bin/env python > 2 # -*- coding: utf-8 -*- > 3 """ > 4 Sage IPython startup script. > 5 """ > 6 > 7 from sage.repl.interpreter import SageTerminalApp > 8 > 9 app = SageTerminalApp.instance() > ---> 10 app.initialize() > global app.initialize = <bound method > SageTerminalApp.initialize of <sage.repl.interpreter.SageTerminalApp > object at 0x7f9a675e1290>> > 11 app.start() > > <decorator-gen-109> in > initialize(self=<sage.repl.interpreter.SageTerminalApp object>, argv=None) > > /usr/lib/python2.7/site-packages/traitlets/config/application.pyc in > catch_config_error(method=<function initialize>, > app=<sage.repl.interpreter.SageTerminalApp object>, *args=(None,), > **kwargs={}) > 72 TRAITLETS_APPLICATION_RAISE_CONFIG_FILE_ERROR = False > 73 else: > 74 raise ValueError("Unsupported value for environment > variable: 'TRAITLETS_APPLICATION_RAISE_CONFIG_FILE_ERROR' is set to '%s' > which is none of {'0', '1', 'false', 'true', ''}."% _envvar ) > 75 > 76 > 77 @decorator > 78 def catch_config_error(method, app, *args, **kwargs): > 79 """Method decorator for catching invalid config > (Trait/ArgumentErrors) during init. > 80 > 81 On a TraitError (generally caused by bad config), this will > print the trait's > 82 message, and exit the app. > 83 > 84 For use on init methods, to prevent invoking excepthook on > invalid input. > 85 """ > 86 try: > ---> 87 return method(app, *args, **kwargs) > method = <function initialize at 0x7f9a597d7578> > app = <sage.repl.interpreter.SageTerminalApp object at > 0x7f9a675e1290> > args = (None,) > kwargs = {} > 88 except (TraitError, ArgumentError) as e: > 89 app.print_help() > 90 app.log.fatal("Bad config encountered during > initialization:") > 91 app.log.fatal(str(e)) > 92 app.log.debug("Config at the time: %s", app.config) > 93 app.exit(1) > 94 > 95 > 96 class ApplicationError(Exception): > 97 pass > 98 > 99 > 100 class LevelFormatter(logging.Formatter): > 101 """Formatter with additional `highlevel` record > 102 > > /usr/lib64/sagemath/site-packages/IPython/terminal/ipapp.pyc in > initialize(self=<sage.repl.interpreter.SageTerminalApp object>, argv=None) > 294 > 295 return super(TerminalIPythonApp, > self).parse_command_line(argv) > 296 > 297 @catch_config_error > 298 def initialize(self, argv=None): > 299 """Do actions after construct, but before starting the > app.""" > 300 super(TerminalIPythonApp, self).initialize(argv) > 301 if self.subapp is not None: > 302 # don't bother initializing further, starting subapp > 303 return > 304 # print self.extra_args > 305 if self.extra_args and not self.something_to_run: > 306 self.file_to_run = self.extra_args[0] > 307 self.init_path() > 308 # create the shell > --> 309 self.init_shell() > self.init_shell = <bound method SageTerminalApp.init_shell of > <sage.repl.interpreter.SageTerminalApp object at 0x7f9a675e1290>> > 310 # and draw the banner > 311 self.init_banner() > 312 # Now a variety of things that happen after the banner > is printed. > 313 self.init_gui_pylab() > 314 self.init_extensions() > 315 self.init_code() > 316 > 317 def init_shell(self): > 318 """initialize the InteractiveShell instance""" > 319 # Create an InteractiveShell instance. > 320 # shell.display_banner should always be False for the > terminal > 321 # based app, because we call shell.show_banner() by > hand below > 322 # so the banner shows *before* all extension loading > stuff. > 323 self.shell = > TerminalInteractiveShell.instance(parent=self, > 324 profile_dir=self.profile_dir, > > /usr/lib64/python2.7/site-packages/sage/repl/interpreter.pyc in > init_shell(self=<sage.repl.interpreter.SageTerminalApp object>) > 747 self.shell.has_sage_extensions = SAGE_EXTENSION in > self.extensions > 748 > 749 # Load the %lprun extension if available > 750 try: > 751 import line_profiler > 752 except ImportError: > 753 pass > 754 else: > 755 self.extensions.append('line_profiler') > 756 > 757 if self.shell.has_sage_extensions: > 758 self.extensions.remove(SAGE_EXTENSION) > 759 > 760 # load sage extension here to get a crash if > 761 # something is wrong with the sage library > --> 762 self.shell.extension_manager.load_extension(SAGE_EXTENSION) > self.shell.extension_manager.load_extension = <bound method > ExtensionManager.load_extension of > <IPython.core.extensions.ExtensionManager object at 0x7f9a58657a10>> > global SAGE_EXTENSION = 'sage' > 763 > 764 > > /usr/lib64/sagemath/site-packages/IPython/core/extensions.pyc in > load_extension(self=<IPython.core.extensions.ExtensionManager object>, > module_str='sage') > 70 > 71 Returns the string "already loaded" if the extension is > already loaded, > 72 "no load function" if the module doesn't have a > load_ipython_extension > 73 function, or None if it succeeded. > 74 """ > 75 if module_str in self.loaded: > 76 return "already loaded" > 77 > 78 from IPython.utils.syspathcontext import > prepended_to_syspath > 79 > 80 with self.shell.builtin_trap: > 81 if module_str not in sys.modules: > 82 with > prepended_to_syspath(self.ipython_extension_dir): > 83 __import__(module_str) > 84 mod = sys.modules[module_str] > ---> 85 if self._call_load_ipython_extension(mod): > self._call_load_ipython_extension = <bound method > ExtensionManager._call_load_ipython_extension of > <IPython.core.extensions.ExtensionManager object at 0x7f9a58657a10>> > mod = <module 'sage' from > '/usr/lib64/python2.7/site-packages/sage/__init__.pyc'> > 86 self.loaded.add(module_str) > 87 else: > 88 return "no load function" > 89 > 90 def unload_extension(self, module_str): > 91 """Unload an IPython extension by its module name. > 92 > 93 This function looks up the extension's name in > ``sys.modules`` and > 94 simply calls ``mod.unload_ipython_extension(self)``. > 95 > 96 Returns the string "no unload function" if the > extension doesn't define > 97 a function to unload itself, "not loaded" if the > extension isn't loaded, > 98 otherwise None. > 99 """ > 100 if module_str not in self.loaded: > > /usr/lib64/sagemath/site-packages/IPython/core/extensions.pyc in > _call_load_ipython_extension(self=<IPython.core.extensions.ExtensionManager > > object>, mod=<module 'sage' from > '/usr/lib64/python2.7/site-packages/sage/__init__.pyc'>) > 117 """ > 118 from IPython.utils.syspathcontext import > prepended_to_syspath > 119 > 120 if (module_str in self.loaded) and (module_str in > sys.modules): > 121 self.unload_extension(module_str) > 122 mod = sys.modules[module_str] > 123 with > prepended_to_syspath(self.ipython_extension_dir): > 124 reload(mod) > 125 if self._call_load_ipython_extension(mod): > 126 self.loaded.add(module_str) > 127 else: > 128 self.load_extension(module_str) > 129 > 130 def _call_load_ipython_extension(self, mod): > 131 if hasattr(mod, 'load_ipython_extension'): > --> 132 mod.load_ipython_extension(self.shell) > mod.load_ipython_extension = <function load_ipython_extension > at 0x7f9a675d4758> > self.shell = > <sage.repl.interpreter.SageTerminalInteractiveShell object at > 0x7f9a597f7d50> > 133 return True > 134 > 135 def _call_unload_ipython_extension(self, mod): > 136 if hasattr(mod, 'unload_ipython_extension'): > 137 mod.unload_ipython_extension(self.shell) > 138 return True > 139 > 140 def install_extension(self, url, filename=None): > 141 """Download and install an IPython extension. > 142 > 143 If filename is given, the file will be so named (inside > the extension > 144 directory). Otherwise, the name from the URL will be > used. The file must > 145 have a .py or .zip extension; otherwise, a ValueError > will be raised. > 146 > 147 Returns the full path to the installed file. > > /usr/lib64/python2.7/site-packages/sage/__init__.pyc in > load_ipython_extension(*args=(<sage.repl.interpreter.SageTerminalInteractiveShell > > > object>,)) > 1 __all__ = ['all'] > 2 > 3 # IPython calls this when starting up > 4 def load_ipython_extension(*args): > 5 import sage.repl.ipython_extension > ----> 6 sage.repl.ipython_extension.load_ipython_extension(*args) > sage.repl.ipython_extension.load_ipython_extension = <function > load_ipython_extension at 0x7f9a58227b18> > args = (<sage.repl.interpreter.SageTerminalInteractiveShell > object at 0x7f9a597f7d50>,) > > /usr/lib64/python2.7/site-packages/sage/repl/ipython_extension.pyc in > wrapper(*args=(<sage.repl.interpreter.SageTerminalInteractiveShell > object>,), **kwargs={}) > 490 ....: if work: > 491 ....: return 'foo worked' > 492 ....: raise RuntimeError("foo didn't work") > 493 sage: foo(False) > 494 Traceback (most recent call last): > 495 ... > 496 RuntimeError: foo didn't work > 497 sage: foo(True) > 498 'foo worked' > 499 sage: foo(False) > 500 sage: foo(True) > 501 """ > 502 @wraps(func) > 503 def wrapper(*args, **kwargs): > 504 if not wrapper.has_run: > --> 505 result = func(*args, **kwargs) > result = undefined > global func = undefined > args = (<sage.repl.interpreter.SageTerminalInteractiveShell > object at 0x7f9a597f7d50>,) > kwargs = {} > 506 wrapper.has_run = True > 507 return result > 508 wrapper.has_run = False > 509 return wrapper > 510 > 511 > 512 @run_once > 513 def load_ipython_extension(ip): > 514 """ > 515 Load the extension in IPython. > 516 """ > 517 # this modifies ip > 518 SageCustomizations(shell=ip) > > /usr/lib64/python2.7/site-packages/sage/repl/ipython_extension.pyc in > load_ipython_extension(ip=<sage.repl.interpreter.SageTerminalInteractiveShell > > object>) > 503 def wrapper(*args, **kwargs): > 504 if not wrapper.has_run: > 505 result = func(*args, **kwargs) > 506 wrapper.has_run = True > 507 return result > 508 wrapper.has_run = False > 509 return wrapper > 510 > 511 > 512 @run_once > 513 def load_ipython_extension(ip): > 514 """ > 515 Load the extension in IPython. > 516 """ > 517 # this modifies ip > --> 518 SageCustomizations(shell=ip) > global SageCustomizations = <class > 'sage.repl.ipython_extension.SageCustomizations'> > global shell = undefined > ip = <sage.repl.interpreter.SageTerminalInteractiveShell object > at 0x7f9a597f7d50> > > /usr/lib64/python2.7/site-packages/sage/repl/ipython_extension.pyc in > __init__(self=<sage.repl.ipython_extension.SageCustomizations object>, > shell=<sage.repl.interpreter.SageTerminalInteractiveShell object>) > 361 def __init__(self, shell=None): > 362 """ > 363 Initialize the Sage plugin. > 364 """ > 365 self.shell = shell > 366 > 367 self.auto_magics = SageMagics(shell) > 368 self.shell.register_magics(self.auto_magics) > 369 > 370 import sage.misc.edit_module as edit_module > 371 self.shell.set_hook('editor', edit_module.edit_devel) > 372 > 373 self.init_inspector() > 374 self.init_line_transforms() > 375 > --> 376 import sage.all # until sage's import hell is fixed > sage.all = undefined > 377 > 378 self.shell.verbose_quit = True > 379 self.set_quit_hook() > 380 > 381 self.register_interface_magics() > 382 > 383 if SAGE_IMPORTALL == 'yes': > 384 self.init_environment() > 385 > 386 def register_interface_magics(self): > 387 """ > 388 Register magics for each of the Sage interfaces > 389 """ > 390 from sage.repl.interface_magic import InterfaceMagic > 391 InterfaceMagic.register_all(self.shell) > > /usr/lib64/python2.7/site-packages/sage/all.py in <module>() > 77 > 78 # Add SAGE_SRC at the end of sys.path to enable Cython tracebacks > 79 # (which use paths relative to SAGE_SRC) > 80 sys.path.append(SAGE_SRC) > 81 > 82 > 83 > ################################################################### > 84 > 85 # This import also setups the interrupt handler > 86 from cysignals.signals import (AlarmInterrupt, SignalError, > 87 sig_on_reset as sig_on_count) > 88 > 89 from time import sleep > 90 > 91 import sage.misc.lazy_import > ---> 92 from sage.misc.all import * # takes a while > global sage.misc.all = undefined > 93 from sage.typeset.all import * > 94 from sage.repl.all import * > 95 > 96 from sage.misc.sh import sh > 97 > 98 from sage.libs.all import * > 99 from sage.data_structures.all import * > 100 from sage.doctest.all import * > 101 > 102 from sage.structure.all import * > 103 from sage.rings.all import * > 104 from sage.arith.all import * > 105 from sage.matrix.all import * > 106 > 107 from sage.symbolic.all import * > > /usr/lib64/python2.7/site-packages/sage/misc/all.py in <module>() > 73 > 74 from .defaults import (set_default_variable_name, > 75 series_precision, set_series_precision) > 76 > 77 from .sage_eval import sage_eval, sageobj > 78 > 79 from .sage_input import sage_input > 80 > 81 lazy_import("sage.misc.cython", ["cython_lambda", > "cython_create_local_so"]) > 82 lazy_import("sage.misc.cython_c", "cython_compile", "cython") > 83 > 84 from .persist import save, load, dumps, loads, db, db_save > 85 > 86 from .func_persist import func_persist > 87 > ---> 88 from .functional import (additive_order, > global functional = undefined > global additive_order = undefined > global base_ring = undefined > global base_field = undefined > global basis = undefined > global category = undefined > global charpoly = undefined > global characteristic_polynomial = undefined > global coerce = undefined > global cyclotomic_polynomial = undefined > global decomposition = undefined > global denominator = undefined > global det = undefined > global dimension = undefined > global dim = undefined > global discriminant = undefined > global disc = undefined > global eta = undefined > global fcp = undefined > global gen = undefined > global gens = undefined > global hecke_operator = undefined > global image = undefined > global integral = undefined > global integrate = undefined > global integral_closure = undefined > global interval = undefined > global xinterval = undefined > global is_commutative = undefined > global is_even = undefined > global is_integrally_closed = undefined > global is_field = undefined > global is_odd = undefined > global kernel = undefined > global krull_dimension = undefined > global lift = undefined > global log = undefined > global log_b = undefined > global minimal_polynomial = undefined > global minpoly = undefined > global multiplicative_order = undefined > global ngens = undefined > global norm = undefined > global numerator = undefined > global numerical_approx = undefined > global n = undefined > global N = undefined > global objgens = undefined > global objgen = undefined > global order = undefined > global rank = undefined > global regulator = undefined > global round = undefined > global quotient = undefined > global quo = undefined > global isqrt = undefined > global squarefree_part = undefined > global symbolic_sum = undefined > global sum = undefined > global transpose = undefined > 89 base_ring, > 90 base_field, > 91 basis, > 92 category, > 93 charpoly, > 94 characteristic_polynomial, > 95 coerce, > 96 cyclotomic_polynomial, > 97 decomposition, > 98 denominator, > 99 det, > 100 dimension, > 101 dim, > 102 discriminant, > 103 disc, > > /usr/lib64/python2.7/site-packages/sage/misc/functional.py in <module>() > 17 # > 18 # This program is free software: you can redistribute it and/or > modify > 19 # it under the terms of the GNU General Public License as > published by > 20 # the Free Software Foundation, either version 2 of the License, > or > 21 # (at your option) any later version. > 22 # http://www.gnu.org/licenses/ > 23 > #***************************************************************************** > > > 24 from __future__ import absolute_import > 25 from six.moves import range > 26 from six.moves import builtins > 27 > 28 import sage.misc.latex > 29 import sage.interfaces.expect > 30 import sage.interfaces.mathematica > 31 > ---> 32 from sage.rings.complex_double import CDF > global sage.rings.complex_double = undefined > global CDF = undefined > 33 from sage.rings.real_double import RDF, RealDoubleElement > 34 > 35 import sage.rings.real_mpfr > 36 import sage.rings.complex_field > 37 import sage.rings.integer > 38 > 39 > ############################################################################## > > > 40 # There are many functions on elements of a ring, which > mathematicians > 41 # usually write f(x), e.g., it is weird to write x.log() and > natural > 42 # to write log(x). The functions below allow for the more > familiar syntax. > 43 > ############################################################################## > > > 44 def additive_order(x): > 45 """ > 46 Returns the additive order of `x`. > 47 > > /usr/lib64/python2.7/site-packages/sage/rings/integer.pxd in init > sage.rings.complex_double > (/builddir/build/BUILD/sage-7.6/src/build/cythonized/sage/rings/complex_double.c:23816)() > > > 1 from sage.libs.gmp.types cimport mpz_t, mpz_ptr > 2 from sage.libs.ntl.types cimport ZZ_c > 3 > 4 from sage.structure.element cimport EuclideanDomainElement, > RingElement > 5 from sage.categories.morphism cimport Morphism > 6 > ----> 7 cdef class Integer(EuclideanDomainElement): > global cdef = undefined > global Integer = undefined > global EuclideanDomainElement = undefined > 8 cdef mpz_t value > 9 > 10 cdef int _to_ZZ(self, ZZ_c *z) except -1 > 11 cdef void set_from_mpz(self, mpz_t value) > 12 cdef hash_c(self) > 13 > 14 cpdef _pari_(self) > 15 > 16 cpdef _shift_helper(Integer self, y, int sign) > 17 cdef _and(Integer self, Integer other) > 18 cdef _or(Integer self, Integer other) > 19 cdef _xor(Integer self, Integer other) > 20 > 21 cpdef size_t _exact_log_log2_iter(self,Integer m) > 22 cpdef size_t _exact_log_mpfi_log(self,m) > 23 cpdef RingElement _valuation(Integer self, Integer p) > 24 cdef object _val_unit(Integer self, Integer p) > 25 cdef Integer _divide_knowing_divisible_by(Integer self, > Integer right) > 26 cdef bint _is_power_of(Integer self, Integer n) > 27 > 28 cdef bint _pseudoprime_is_prime(self, proof) except -1 > 29 cpdef list _pari_divisors_small(self) > 30 > 31 cdef _reduce_set(self, s) # do not use, since integers are > immutable. > > /usr/lib64/python2.7/site-packages/sage/rings/rational.pxd in init > sage.rings.integer > (/builddir/build/BUILD/sage-7.6/src/build/cythonized/sage/rings/integer.c:50835)() > > > 1 from sage.libs.gmp.types cimport mpq_t > 2 > 3 cimport sage.structure.element > 4 cimport sage.rings.integer as integer > 5 > 6 cpdef rational_power_parts(a, b, factor_limit=?) > 7 > ----> 8 cdef class Rational(sage.structure.element.FieldElement): > global cdef = undefined > global Rational = undefined > global sage.structure.element.FieldElement = undefined > 9 cdef mpq_t value > 10 > 11 cdef __set_value(self, x, unsigned int base) > 12 cdef void set_from_mpq(Rational self, mpq_t value) > 13 cdef _lshift(self, long int exp) > 14 cdef _rshift(self, long int exp) > 15 > 16 cdef _val_unit(self, integer.Integer p) > > /usr/lib64/python2.7/site-packages/sage/rings/fast_arith.pxd in init > sage.rings.rational > (/builddir/build/BUILD/sage-7.6/src/build/cythonized/sage/rings/rational.c:40371)() > > > 1 cpdef prime_range(start, stop=*, algorithm=*, bint py_ints=*) > 2 > ----> 3 cdef class arith_int: > global cdef = undefined > global arith_int = undefined > 4 cdef int abs_int(self, int x) except -1 > 5 cdef int sign_int(self, int n) except -2 > 6 cdef int c_gcd_int(self, int a, int b) except -1 > 7 cdef int c_xgcd_int(self, int a, int b, int* ss, int* tt) > except -1 > 8 cdef int c_inverse_mod_int(self, int a, int m) except -1 > 9 cdef int c_rational_recon_int(self, int a, int m, int* n, > int* d) except -1 > 10 > 11 cdef class arith_llong: > 12 cdef long long abs_longlong(self, long long x) except -1 > 13 cdef long long sign_longlong(self, long long n) except -2 > 14 cdef long long c_gcd_longlong(self, long long a, long long > b) except -1 > 15 cdef public long long c_xgcd_longlong(self, long long a, > long long b, > 16 long long *ss, > 17 long long *tt) except > -1 > 18 cdef long long c_inverse_mod_longlong(self, long long a, > long long m) except -1 > 19 cdef long long c_rational_recon_longlong(self, long long a, > long long m, > 20 long long *n, long > long *d) except -1 > > /usr/lib64/python2.7/site-packages/sage/rings/fast_arith.pyx in init > sage.rings.fast_arith > (/builddir/build/BUILD/sage-7.6/src/build/cythonized/sage/rings/fast_arith.c:8710)() > > > 34 # * c_inverse_mod_int -- inverse of an int modulo another int > 35 # * c_rational_recon_int -- rational reconstruction of ints > 36 # * rational_recon_int -- export of rational reconstruction > for ints > 37 # > 38 # The long long functions are the same, except they end in > _longlong. > 39 # > 40 > ################################################################### > 41 > 42 # The int definitions > 43 > 44 from sage.ext.stdsage cimport PY_NEW > 45 include "sage/ext/cdefs.pxi" > 46 > 47 from sage.libs.cypari2.paridecl cimport * > 48 from sage.libs.cypari2.gen cimport Gen as pari_gen > ---> 49 from sage.libs.pari.all import pari > global sage.libs.pari.all = undefined > global pari = undefined > 50 from sage.rings.integer cimport Integer > 51 > 52 cpdef prime_range(start, stop=None, algorithm="pari_primes", > bint py_ints=False): > 53 r""" > 54 List of all primes between start and stop-1, inclusive. If > the > 55 second argument is omitted, returns the primes up to the > first > 56 argument. > 57 > 58 This function is closely related to (and can use) the > primes iterator. > 59 Use algorithm "pari_primes" when both start and stop are > not too large, > 60 since in all cases this function makes a table of primes up > to > 61 stop. If both are large, use algorithm "pari_isprime" > instead. > 62 > 63 Algorithm "pari_primes" is faster for most input, but > crashes for larger input. > 64 Algorithm "pari_isprime" is slower but will work for much > larger input. > > /usr/lib64/python2.7/site-packages/sage/libs/pari/__init__.py in > <module>() > 191 # too fragile) > 192 # > 193 # The underlying issue is fixed in Cygwin v2.5.2 > 194 sizemax = min(sizemax, 0xf0000000) > 195 > 196 from sage.libs.cypari2 import Pari > 197 P = Pari(1000000, sizemax) > 198 > 199 # pari_init_opts() overrides MPIR's memory allocation > functions, > 200 # so we need to reset them. > 201 from sage.ext.memory import init_memory_functions > 202 init_memory_functions() > 203 > 204 return P > 205 > --> 206 pari = _get_pari_instance() > global pari = undefined > global _get_pari_instance = None > > /usr/lib64/python2.7/site-packages/sage/libs/pari/__init__.py in > _get_pari_instance() > 169 3.60546360143265208591582056420772677481026899659802474544 > 170 > 171 """ > 172 > 173 def _get_pari_instance(): > 174 # There are two constraints for the virtual stack size: > 175 # 1) on 32-bit systems, even virtual memory can be a scarce > 176 # resource since it is limited by 4GB (of which the kernel > 177 # needs a significant part) > 178 # 2) the system should actually be able to handle a stack > size > 179 # as large as the complete virtual stack. > 180 # As a simple heuristic, we set the virtual stack to 1/4 of > the > 181 # virtual memory. > 182 from sage.misc.getusage import virtual_memory_limit > 183 > --> 184 sizemax = virtual_memory_limit() // 4 > sizemax = undefined > virtual_memory_limit = <function virtual_memory_limit at > 0x7f9a51d1e0c8> > 185 > 186 from sage.env import CYGWIN_VERSION > 187 if CYGWIN_VERSION and CYGWIN_VERSION < (2, 5, 2): > 188 # Cygwin's mmap is broken for large NORESERVE mmaps (>~ > 4GB) See > 189 # http://trac.sagemath.org/ticket/20463 So we set the > max stack > 190 # size to a little below 4GB (putting it right on the > margin proves > 191 # too fragile) > 192 # > 193 # The underlying issue is fixed in Cygwin v2.5.2 > 194 sizemax = min(sizemax, 0xf0000000) > 195 > 196 from sage.libs.cypari2 import Pari > 197 P = Pari(1000000, sizemax) > 198 > 199 # pari_init_opts() overrides MPIR's memory allocation > functions, > > /usr/lib64/python2.7/site-packages/sage/misc/getusage.pyc in > virtual_memory_limit() > 64 > 65 EXAMPLES:: > 66 > 67 sage: from sage.misc.getusage import virtual_memory_limit > 68 sage: virtual_memory_limit() > 0 > 69 True > 70 sage: virtual_memory_limit() <= sys.maxsize > 71 True > 72 """ > 73 import resource > 74 try: > 75 vmax = resource.getrlimit(resource.RLIMIT_AS)[0] > 76 except resource.error: > 77 vmax = resource.RLIM_INFINITY > 78 if vmax == resource.RLIM_INFINITY: > ---> 79 import psutil > psutil = undefined > 80 vmax = psutil.virtual_memory().total + > psutil.swap_memory().total > 81 return min(vmax, sys.maxsize) > 82 > 83 > 84 > ######################################################################## > 85 # Old deprecated stuff below > 86 > ######################################################################## > 87 > 88 def top(): > 89 """ > 90 Return the 'top' or 'prstat' line that contains this > running Sage > 91 process. > 92 For FreeBSD, return the line containing this running Sage > process from > 93 'ps -axwww -o pid,user,vsz,rss,state,pri,nice,time,cpu,comm'. > 94 > > ImportError: No module named psutil > > *************************************************************************** > > > History of session input: > *** Last line of input (may not be in above history): > > -- You received this message because you are subscribed to the Google Groups "sage-support" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-support+unsubscr...@googlegroups.com. To post to this group, send email to sage-support@googlegroups.com. Visit this group at https://groups.google.com/group/sage-support. For more options, visit https://groups.google.com/d/optout.