SAGE

SageMath 是一个免费的开源数学软件系统,根据 GPL 许可发布。「SageMath is a free open-source mathematics software system licensed under the GPL.

Github stars Tracking Chart

SageMath 是一个免费的开源数学软件系统,根据GPL许可发布。它建立在许多现有的开源包之上: NumPy, SciPy, matplotlib, Sympy, Maxima, GAP, FLINT, R 等等。 通过一种常见的基于Python的语言或直接通过接口或包装器来访问它们的组合功能。

使命:创建一个 Magma、Maple、Mathematica 和 Matlab 的可行的、自由开源的替代软件。

SageMath 由近100个开源包构成,并具有统一的界面。 SageMath 可用于研究初级和高级数学、理论数学和应用数学。 这包括一个巨大的数学范围,包括基本代数、微积分、基础到非常高级的数论,密码学,数值计算,可交换代数,群论,组合论,图论,精确线性代数等等。它结合了各种软件包,并将它们的功能无缝集成到一种普通的体验中。它非常适合教育和研究。

用法
要在 Microsoft Windows 上运行 SageMath,您需要以下:

当前的 VirtualBox 解决方案为您提供一个封装和测试的系统。 它允许在 Web 浏览器中使用 SageMath 笔记本,与原生的 Linux 安装相比没有明显的速度损失。

系统要求:
  • 1 GB RAM
  • 7 GB可用磁盘空间

注:本仓库是 Sage 源代码树的镜像 -- 请不要在此提交 PR -- 所有内容必须通过https://trac.sagemath.org/ 提交。

Overview

Name With Ownersagemath/sage
Primary LanguagePython
Program languageMakefile (Language Count: 20)
PlatformDocker, Linux, Mac, Windows, Virtual Box, Windows Subsystem for Linux (WSL)
License:Other
Release Count1076
Last Release Name10.4.beta3 (Posted on 2024-04-13 00:39:00)
First Release Name1.3.7.3 (Posted on )
Created At2012-06-08 10:11:02
Pushed At2024-04-14 17:10:41
Last Commit At2024-03-19 23:59:45
Stargazers Count1k
Watchers Count8
Fork Count381
Commits Count122.7k
Has Issues Enabled
Issues Count35434
Issue Open Count4909
Pull Requests Count1640
Pull Requests Open Count324
Pull Requests Close Count166
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private

Sage: Open Source Mathematical Software

"Creating a Viable Open Source Alternative to
Magma, Maple, Mathematica, and MATLAB"

Copyright (C) 2005-2019 The Sage Development Team

https://www.sagemath.org

The Sage Library is GPLv2+, and included packages have compatible OSS
licenses
. Over 400 people
have contributed code to Sage. In many cases, documentation for modules
and functions list the authors.

Getting Started

If you downloaded a binary
(i.e. a version of SageMath prepared for a specific operating system),
Sage is ready to start -- just open a terminal in the directory where
you extracted the binary archive and type:

./sage

If you downloaded the sources,
please read below on how to build Sage and work around common issues.

If you have questions or encounter problems, please do not hesitate
to email the sage-support mailing list
or ask on ask.sagemath.org.

Contributing to Sage

If you'd like to contribute to Sage, be sure to read the
Developer's Guide.

Supported Platforms

Sage fully supports several Linux distributions, recent versions of
Mac OS X, Windows (using virtualization), as well as a number of
Solaris and OpenSolaris releases.

Ports are in progress to some other, less common platforms. The list of
supported platforms and their current statuses are given in our wiki.

If you are interested in helping port Sage to a new platform, please let
us know at the sage-devel mailing list.

Quick Instructions to Build from Source

The following steps briefly outline the process of building Sage from
source. More detailed instructions, including how to build faster on
multicore machines, are contained later in this README and in the
Installation Guide.

  1. Make sure your system has an SSL library and its development
    files installed

    Like Python, on which it is based, Sage uses the OpenSSL library
    for added performance if made available by the operating system. It
    has been shown that Sage can be successfully built against other
    SSL libraries, with some of its features disabled.

  2. Make sure you have the dependencies and 5 GB of free disk space

    • All Linux versions: gcc, make, m4, perl, ranlib, git, and tar (a
      matching set of gcc, gfortran and g++ will avoid the compilation
      of Sage-specific compilers). It should also be possible to use clang/clang++,
      however this is less well-tested.

    • Fedora or RedHat systems: the perl-ExtUtils-MakeMaker package.
      (install these using your package manager)

    • OS X:

      • Make sure you have installed the most recent version
        of Xcode which you can install for free from the App Store.
      • You also need to install the "command line tools". When
        using OS X Mavericks, after installing Xcode, run
        xcode-select --install from a terminal window:
        Then click "Install" in the pop-up window.
        When using OS X Mountain Lion or earlier, you need to install the
        command line tools from Xcode: run Xcode; then from the File
        menu, choose "Preferences", then the "Downloads" tab, and then
        "Install" the Command Line Tools. You might also have Homebrew or
        a similar "Apple's missing package manager" system installed, with
        and libraries such gfortran, gmp, etc installed. (However, this
        is still experimental as of May 2019).
    • Other platforms: See detailed instructions below.

  3. It might be desirable, it terms of faster building and better portability,
    to install, as system packages, an ever increasing list of Sage packages
    which otherwise might have to be built. The following is a list of Sage packages
    "replaceable" by system's packages as of Sage release 8.8:
    bzip2, curl, cmake, gcc/clang, gf2x, gfortran (usually part of gcc installation),
    git, gmp, libffi, patch, pcre, perl_term_readline_gnu, xz/lzma, yasm, zeromq, zlib.
    Details and names of system packages containing these are system-dependent. E.g. on Debian
    bzip2 lives in libbz2-dev. More details on this are in Installation manual.

  4. Extract the tarball

    tar zxvf sage-*.tar.gz
    
  5. cd into the Sage directory and type make

    cd sage-*/
    make
    

    That's it! Everything is automatic and non-interactive. The build
    should work fine on all fully supported platforms. If it does not, we
    want to know!

Environment Variables

There are a lot of environment variables which control the install
process of Sage described in more detail in the
Installation Guide.

Implementation

Sage has significant components written in the following languages:
C/C++, Python, Cython, Lisp, Fortran, and a bit of Perl. Lisp (ECL), Python, and Cython
are built as part of Sage.

Docker Images

You can also have a look at our Docker images to run Sage.
To use these images install Docker
and follow the instructions on our Docker Hub page.

More Detailed Instructions to Build from Source

  1. Make sure you have about 5 GB of free disk space.

  2. Install build dependencies

    • Linux: See quick instructions above.

    • OS X: (a.k.a MacOS) Make sure you have a recent Xcode version.
      If you don't, go to https://developer.apple.com/,
      sign up, and download the free Xcode package. Usually, Xcode's command line
      tools suffice to build Sage, although several times new releases of Xcode broke this.
      Only OS X >= 10.4 is supported, and (as of May 2019) we only test Sage on OS X >= 10.6.

    • Solaris and OpenSolaris: Building Sage on these platforms is more
      tricky than on Linux or OS X. For details on how to build Sage on
      these platforms, see our wiki (outdated as of May 2019).

    • Windows: Download and install VirtualBox,
      and then download the Sage virtual appliance.

    • NOTE: On some operating systems, it might be necessary to install
      gas/as, gld/ld, gnm/nm. On most platforms, these are automatically
      installed when you install the programs listed above.

  3. Extract the Sage source tarball into a directory, making sure
    there are no spaces in the path to the resulting directory.

    Note that moving the directory after Sage has been built will
    require to build Sage again.

  4. Change to the Sage directory using cd.

  5. Optional: set some environment variables to customize the build.

    For example, the MAKE environment variable controls whether to run
    several jobs in parallel, while the SAGE_CHECK environment variable
    controls whether to perform more tests during the installation. For
    an in-depth discussion of environment variables for building Sage, see
    the installation guide.

    On a machine with 4 processors, say, typing export MAKE="make -j4"
    will configure the build script to perform a parallel compilation of
    Sage using 4 jobs. You might even consider -j5 or -j6, as
    building with more jobs than CPU cores can speed things up further.
    You might in addition pass a -l load flag
    to make: this sets a load limit, so for example if you execute
    export MAKE="make -j4 -l5.5" then "make" won't start more than one
    job at a time if the system load average is above 5.5, see
    the make documentation.

    If you want to run the test suite for each individual Sage package
    as it gets installed, type export SAGE_CHECK="yes". This will run
    each test suite, raising an error if any failure occurs. Python's
    test suite has been disabled by default, because it causes failures
    on most systems. To enable the Python test suite, set the environment
    variable SAGE_CHECK_PACKAGES to python.

  6. To start the build, type make.

    Note: to build a Python2-based Sage, instead of typing make, type

    make configure
    ./configure --with-python=2
    make
    

    This will build Sage based on Python 2 rather than based on Python 3,
    which is the default since sage 9.0.

  7. Wait about 20 minutes to 14 days, depending on your computer (it took
    about 2 weeks to build Sage on the T-Mobile G1 Android cell phone).

  8. Type ./sage to try it out.

  9. Optional: Type make ptestlong to test all examples in the documentation
    (over 200,000 lines of input!) -- this takes from 10 minutes to
    several hours. Don't get too disturbed if there are 2 to 3 failures,
    but always feel free to email the section of logs/ptestlong.log that
    contains errors to the sage-support mailing list.
    If there are numerous failures, there was a serious problem with your build.

    Note: if you built for Python 3, you can instead run make ptest-python3.

  10. The HTML version of the documentation
    is built during the compilation process of Sage and resides in the directory
    local/share/doc/sage/html/.

  11. Optional: If you want to build the PDF version of the documentation,
    run make doc-pdf (this requires LaTeX to be installed).

  12. Optional: You might install optional packages of interest to you: type
    ./sage --optional to get a list.

  13. Optional: It is recommended that you have both LaTeX and the
    ImageMagick tools (e.g. the "convert" command) installed since some
    plotting functionality benefits from it.

  14. Optional: Read this if you are intending to run a Sage notebook
    server for multiple users. For security (i.e., to run
    notebook(secure=True)) you want to access the server using the
    HTTPS protocol. First, install OpenSSL and the OpenSSL development
    headers on your system if they are not already installed. Then
    install pyOpenSSL by building Sage and then typing
    ./sage -i pyopenssl.
    Note that this command requires internet access. Alternatively,
    make ssl builds Sage and installs pyOpenSSL.

Troubleshooting

If you have problems building Sage, check the Sage Installation Guide,
and also note the following. Each separate component of Sage is
contained in an spkg; these are stored in build/pkgs/. As each one
is built, a build log is stored in logs/pkgs/, so you can browse these
to find error messages. If an spkg fails to build, the whole build
process will stop soon after, so check the most recent log files
first, or run

   grep -li "^Error" logs/pkgs/*

from the top-level Sage directory to find log files with error
messages in them. Send (a small part of) the relevant log file to the
sage-devel mailing list,
making sure to include at least some of the error messages; probably
someone there will have some helpful suggestions.

Supported Compilers

Sage includes a GCC (GNU Compiler Collection) package. However,
it almost always better to use C, C++ and Fortran compilers
already available on the system. To force using specific compilers,
set environment variables CC, CXX, and FC (for C, C++, and Fortran compilers,
respectively) to the desired values,
and run ./configure. E.g. CC=clang CXX=clang++ FC=gfortran ./configure
will configure Sage to be built with Clang C/C++ compilers and Fortran
compiler gfortran.

It is determined automatically whether Sage's GCC package, or just its part containing
Fortran compiler gfortran needs to be installed. This can be overwritten
by running ./configure with option --without-system-gcc.

There are some known problems with old assemblers, in particular when
building the ECM package. You should ensure that your assembler
understands all instructions for your processor. On Linux, this means
you need a recent version of binutils; on OS X you need a recent version
of Xcode.

Directory Layout

Simplified directory layout (only essential files/directories):

SAGE_ROOT                 Root directory (sage-x.y.z in Sage tarball)
├── build
│   └── pkgs              Every package is a subdirectory here
│       ├── atlas
│       …
│       └── zn_poly
├── COPYING.txt           Copyright information
├── local                 Compiled packages are installed here
│   ├── bin               Executables
│   ├── include           C/C++ headers
│   ├── lib               Shared libraries
│   ├── share             Databases, architecture-independent data, docs
│       └── doc           Viewable docs of Sage and of some components
│   └── var
│       ├── sage          List of installed packages
│       └── tmp           Temporary files when building Sage
├── logs
│   ├── dochtml.log       Log of the documentation build
│   ├── install.log       Full install log
│   └── pkgs              Build logs of individual packages
│       ├── atlas-3.10.1.p7.log
│       …
│       └── zn_poly-0.9.p11.log
├── m4                    M4 macros for configure
│   └── *.m4
├── Makefile              Running "make" uses this file
├── README.md             This file
├── sage                  Script to start Sage
├── src                   All of Sage source (not third-party packages)
│   ├── bin               Scripts that Sage uses internally
│   ├── doc               Sage documentation sources
│   └── sage              The Sage library source code
├── upstream              Source tarballs of packages
│   ├── atlas-3.10.1.tar.bz2
│   …
│   └── zn_poly-0.9.tar.bz2
└── VERSION.txt

For more details see our Developer's Guide.

Build System

This is a brief summary of the Sage software distribution's build system.
There are two components to the full Sage system--the Sage Python library
and its associated user interfaces, and the larger software distribution of
Sage's main dependencies (for those dependencies not supplied by the user's
system).

Sage's Python library is built and installed using a setup.py script as is
standard for Python packages (Sage's setup.py is non-trivial, but not
unusual).

Most of the rest of the build system is concerned with building all of Sage's
dependencies in the correct order in relation to each other. The dependencies
included by Sage are referred to as SPKGs (i.e. "Sage Packages") and are listed
under build/pkgs.

The main entrypoint to Sage's build system is the top-level Makefile at the
root of the source tree. Unlike most normal projects that use autoconf (Sage
does as well, as described below), this Makefile is not generated. Instead,
it contains a few high-level targets and targets related to bootstrapping the
system. Nonetheless, we still run make <target> from the root of the source
tree--targets not explicitly defined in the top-level Makefile are passed
through to another Makefile under build/make/Makefile.

The latter build/make/Makefile is generated by an autoconf-generated
configure script, using the template in build/make/Makefile.in. This
includes rules for building the Sage library itself (make sagelib), and for
building and installing each of Sage's dependencies (e.g. make python2).

Although it's possible to manually run Sage's configure script if one wants
to provide some customizations (e.g. it is possible to select which BLAS
implementation to use), the top-level Makefile will run configure for you,
in order to build build/make/Makefile since it's a prerequisite for most of
Sage's make targets.

The configure script itself, if it is not already built, can be generated by
running the bootstrap script (the latter requires GNU autotools being installed).
The top-level Makefile also takes care of this automatically.

To summarize, running a command like make python3 at the top-level of the
source tree goes something like this:

  1. make python3
  2. run ./bootstrap if configure does not exist
  3. run ./configure if build/make/Makefile does not exist
  4. cd into build/make and run the install script--this is little more
    than a front-end to running make -f build/make/Makefile python3, which
    sets some necessary environment variables and logs some information
  5. build/make/Makefile contains the actual rule for building python3; this
    includes building all of python3's dependencies first (and their
    dependencies, recursively); the actual package installation is performed
    with the sage-spkg program

Relocation

It used to be possible to move the sage-x.y.z/ directory anywhere you
want, however, this is no longer supported.
If you copy the sage script or make a symbolic link to it, you
should modify the script to reflect this (as instructed at the top of
the script). It is important that the path to Sage does not have any spaces
and non-ASCII characters in it.

For a system-wide installation, you have to build Sage as a "normal" user
and then as root you can change permissions. Afterwards, you need to start up
Sage as root at least once prior to using the system-wide Sage as a
normal user. See the Installation Guide
for further information.

If you find anything that doesn't work correctly after you moved the
directory, please email the sage-support mailing list.

Redistribution

Your local Sage install is almost exactly the same as any "developer"
install. You can make changes to documentation, source, etc., and very
easily package the complete results up for redistribution just like we
do.

  1. To make your own source tarball of Sage, type:

    sage --sdist
    

    The result is placed in the directory dist/.

  2. To make a binary distribution with your currently installed packages,
    visit sagemath/binary-pkg.

Changes to Included Software

All software included with Sage is copyrighted by the respective authors
and released under an open source license that is GPL version 3 or
later
compatible. See COPYING.txt for more details.

Sources are in unmodified (as far as possible) tarballs in the
upstream/ directory. The remaining description, version
information, patches, and build scripts are in the accompanying
build/pkgs/<packagename> directory. This directory is
part of the Sage git repository.

To the top