Skip to content
forked from sagemath/sage

SageMath 的主要存储库。现在开放接受问题和请求请求。

License

Notifications You must be signed in to change notification settings

yuanzhongqiao/sage

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

“创建 Magma、Maple、Mathematica 和 MATLAB 的可行开源替代方案”

Sage 是根据 GNU 通用公共许可证 GPLv2+ 发布的开源数学软件,并包含具有兼容软件许可证的软件包。 全球各地的人们都为 Sage 的发展做出了贡献。完整文档可在线获取。

目录

入门

那些不耐烦的人可以使用预构建的 Sage,可以从任何地方在线获取

活页夹   Gitpod 准备编码   在 GitHub Codespaces 中打开

无需本地安装。否则请继续阅读。

Sage 安装指南提供 了一个决策树,可指导您选择最适合您的安装类型。这包括从源代码构建、从包管理器获取 Sage、使用容器映像或在云中使用 Sage。

本自述文件包含从源代码构建 Sage 的独立说明。 它假设您已经克隆了 git 存储库或 以 tarball 的形式下载了源代码。

如果您有疑问或遇到问题,请随时向Sage 支持邮件列表发送电子邮件或在Ask Sage 问题与解答网站 上提问。

支持的平台

Sage 尝试支持所有主要的 Linux 发行版、最新版本的 macOS 和 Windows(使用适用于 Linux 或虚拟化的 Windows 子系统)。

有关特定 Sage 版本支持的平台的详细信息,请参阅此版本发布之旅可用性和安装帮助部分。

我们高度赞赏对 Sage 的贡献,修复了可移植性错误并帮助将 Sage 移植到新平台;请通过sage-devel 邮件列表告诉我们。

[Windows] 准备平台

在 Windows 上运行 Sage 的首选方法是使用 Windows Subsystem for Linux (WSL)。按照 官方 WSL 安装指南 安装 Ubuntu(或其他 Linux 发行版)。确保为 WSL 分配足够的 RAM;已知 5GB 可以工作,而 2GB 可能不足以从源代码构建 Sage。然后适用于 Linux 中的所有安装说明。

作为替代方案,您还可以使用 Docker(见下文)或其他虚拟化解决方案在 Windows 上运行 Linux。

[macOS] 准备平台

  • 如果您的 Mac 使用 Apple Silicon(M1、M2、M3;arm64)架构,并且您通过从旧版 Mac 传输文件来设置 Mac,请确保该目录/usr/local不包含 Homebrew(或其他软件)的旧副本您可能已复制的 x86_64 架构。请注意,M1 的 Homebrew 安装在/opt/homebrew,而不是 /usr/local.

  • 如果您想使用 conda,请参阅Sage 安装手册中有关 conda 的部分以获取指导。

  • 否则,我们强烈建议使用https://brew.sh/中的 Homebrew(“macOS 缺少的包管理器”) ,它提供了gfortran 编译器和许多库。

  • 否则,如果您不想安装 Homebrew,则需要安装最新版本的 Xcode 命令行工具。打开终端窗口并运行xcode-select --install;然后在弹出的窗口中点击“安装”。如果 Xcode 命令行工具已安装,您可能需要输入 来检查是否需要更新softwareupdate -l

从源代码构建的说明

与许多其他软件包一样,Sage 是使用 ./configure,然后是make.但是,我们强烈建议您阅读以下构建 Sage 的分步说明。

这些说明涵盖所有 Linux、macOS 和 WSL。

提供这些说明背景的更多详细信息可以在“从源代码安装”部分中找到。在安装指南中。

  1. 确定源/构建目录 ( SAGE_ROOT):

    • 在个人计算机上,:envvar: 目录的任何子目录HOME 都可以。

    • 例如,您可以使用SAGE_ROOT=~/sage/sage,我们将使用它作为下面的运行示例。

    • 您需要至少 10 GB 的可用磁盘空间。

    • 源目录的完整路径不能包含空格

    • 开始构建后,您无法在不破坏内容的情况下移动源/构建目录。

    • 您可能希望避免使用慢速文件系统,例如 网络文件系统 (NFS) 等。

    • [macOS] macOS 允许在不使用精确大小写的情况下更改目录。针对 macOS 进行编译时请注意这种便利性。更改为 :envvar: 时忽略精确的大写SAGE_ROOT可能会导致需要路径名中精确大写的依赖项出现构建错误。

  2. 使用以下命令克隆源git

    • 要检查其git是否可用,请打开终端并在 shell 提示符 ( $) 下输入以下命令:

        $ git --version
        git version 2.42.0
      

      确切的版本并不重要,但如果此命令出现错误,git请使用包管理器进行安装,使用以下命令之一:

        $ sudo pacman -S git                          # on Arch Linux
        $ sudo apt-get update && apt-get install git  # on Debian/Ubuntu
        $ sudo yum install git                        # on Fedora/Redhat/CentOS
        $ sudo zypper install git                     # on openSUSE
        $ sudo xbps-install git                       # on Void Linux
      
    • SAGE_ROOT创建应建立的目录:

        $ mkdir -p ~/sage
        $ cd ~/sage
      
    • 克隆 Sage git 存储库:

        $ git clone -c core.symlinks=true --filter blob:none  \
                    --origin upstream --branch develop --tags \
                    https://github.com/sagemath/sage.git
      

      此命令获取最新的开发版本。替换--branch develop--branch master选择最新的稳定版本。

      这将创建子目录~/sage/sage。 (有关详细信息,请参阅《Sage 开发人员指南》中的“设置 git”部分 和以下部分。)

    • 切换到创建的子目录:

        $ cd sage
      
    • [Windows] Sage 源代码树包含符号链接,如果使用 Windows 行结尾而不是 UNIX 行结尾,则构建将无法工作。

      因此建议(但不是必须)使用 WSL 版本的git.

  3. 安装系统包。

    请参阅《Sage 安装手册》中有关从源代码安装的部分,以获取可以安装的系统软件包的编译。完成后,跳至步骤 7(引导)。

    或者,遵循下面更细粒度的方法。

  4. [Linux、WSL] 安装所需的最低构建先决条件:

    • 编译器:gccgfortrang++(支持从 8.4.0 到 13.x 的 GCC 版本以及最新版本的 Clang (LLVM))。 有关合适编译器的讨论,请参阅build/pkgs/gcc/SPKG.rstbuild/pkgs/gfortran/SPKG.rst 。

    • 构建工具:GNU 、makeGNU 、m4perl包括 ExtUtils::MakeMakerranlib、、、、、。有关更多详细信息,请参阅build/pkgs/_prereq/SPKG.rst 。gittarbc

    • Python 3.4 或更高版本,或 Python 2.7,完整安装包括 urllib;但理想的版本是 3.9.x、3.10.x、3.11.x、3.12.x,这将避免构建 Sage 自己的 Python 3 副本。 有关更多详细信息,请参阅build/pkgs/python3/SPKG.rst 。

    我们收集了提供这些构建先决条件的系统包列表。请参阅文件夹 build/pkgs/_prereq/distros中的文件 arch.txtdebian.txt (也适用于 Ubuntu、Linux Mint 等)、 fedora.txt (也适用于 Red Hat、CentOS)、 opensuse.txtslackware.txtvoid.txt,或访问 https://doc.sagemath.org/html/en/reference/spkg/_prereq.html#spkg-prereq

  5. 可选:建议您安装 LaTeX 和 ImageMagick 工具(例如“转换”命令),因为某些绘图功能可以受益于它们。

  6. [开发] 如果您计划进行 Sage 开发或以其他方式使用票据分支而不仅仅是发布,请安装引导先决条件。请参阅文件夹 build/pkgs/_bootstrap/distros中的文件,或访问 https://doc.sagemath.org/html/en/reference/spkg/_bootstrap.html#spkg-bootstrap

  7. 使用以下命令引导源树:

    $ make configure
    

    (如果未安装引导先决条件,此命令将下载提供预构建引导输出的包。)

  8. 清理构建环境。使用命令

    $ env
    

    检查当前环境变量,特别是PATHPKG_CONFIG_PATHLD_LIBRARY_PATHCFLAGSCPPFLAGSCXXFLAGSLDFLAGS(如果设置)。

    从这些(以冒号分隔的)环境变量中删除 Sage 不应将其用于其自己的构建的项目。特别是,如果项目引用了以前的 Sage 安装,请删除它们。

    • [WSL] 特别是,WSL 将许多项目从 Windows PATH变量导入到 Linux 环境中,这可能会导致令人困惑的构建错误。这些项目通常以 开头/mnt/c。最好将它们从环境变量中全部删除。例如,您可以PATH使用以下命令进行设置:

        $ export PATH=/usr/sbin/:/sbin/:/bin/:/usr/lib/wsl/lib/
      
    • [macOS with homebrew] 设置构建所需的环境变量:

        $ source ./.homebrew-build-env
      

      这是为了使一些 Homebrew 的软件包(所谓的 keg-only 软件包)可用于构建。运行一次以应用当前终端会话的建议。在从新的终端会话重建 Sage 之前或安装其他自制程序包之后,您可能需要重复此命令。 (您还可以将其添加到您的 shell 配置文件中,以便它在以后的所有会话中自动运行。)

  9. (可选)决定安装前缀 ( SAGE_LOCAL):

    • 传统上,默认情况下,Sage 安装到根目录为 的子目录层次结构中SAGE_ROOT/local/

    • 可以使用 进行更改./configure --prefix=SAGE_LOCAL,其中SAGE_LOCAL是所需的安装前缀,该前缀必须可由用户写入。

      如果将此选项与 结合使用--disable-editable,则可以在完成构建过程后删除整个 Sage 源树。安装的SAGE_LOCAL将是 Sage 的独立安装。

    • 请注意,在 Sage 的构建过程中,make构建 安装(make install是无操作)。因此,安装层次结构必须可由用户写入。

    • 如果您想安装到共享位置(例如/usr/local/.不要尝试将 Sage 构建为root.

  10. (可选)查看配置选项,其中包括许多可选包:

    $ ./configure --help
    

    Sage 开发人员值得注意的选项如下:

    • 使用该选项--config-cache可以configure 保留配置值的磁盘缓存。当尝试进行包升级的票证分支时,这会带来很好的加速,这涉及自动重新运行配置步骤。

    • 使用该选项--enable-ccache让 Sage 安装并使用可选包ccache,该包预先配置为保留从源文件创建的对象文件的磁盘缓存。这可以在不同分支之间切换时提供极大的加速,但会占用磁盘空间。

  11. 可选,但强烈推荐:设置一些环境变量来自定义构建。

    例如,MAKE环境变量控制是否并行运行多个作业。例如,在具有 4 个处理器的机器上,键入export MAKE="make -j4"将配置构建脚本以使用 4 个作业执行 Sage 的并行编译。在一些功能强大的机器上,您甚至可能会考虑-j16,因为使用比 CPU 核心更多的作业进行构建可以进一步加快速度。

    要减少构建期间的终端输出,请输入export V=0。 (V代表“冗长”。)

    一些环境变量值得特别提及:CCCXXFC。这些定义编译器的变量可以在配置时设置,并且它们的值将被记录下来以供在构建时和运行时进一步使用。

    有关构建 Sage 的更多环境变量的深入讨论,请参阅安装指南

  12. 键入./configure,然后键入您要使用的任何选项。例如,要gf2x使用 Sage 提供的包构建 Sage,请使用./configure --with-system-gf2x=no.

    成功运行结束后./configure,您可能会看到建议使用包管理器安装额外系统包的消息。

    对于大量的Sage 软件包,Sage 能够检测已安装的系统软件包是否适合与 Sage 一起使用;在这种情况下,Sage 不会从源构建另一个副本。

    有时,消息会建议安装系统上已安装的软件包。请参阅之前的配置消息或文件config.log以获取说明。此外,这些消息可能会建议安装实际上不可用的软件包;只有您的发行版的最新版本才会包含所有这些推荐的软件包。

  13. 可选:如果您选择安装附加系统软件包,重新运行./configure将测试安装的版本是否可用于 Sage;如果是,这将减少 Sage 所需的编译时间和磁盘空间。包的使用可以通过./configure参数进行调整(再次检查 的输出 ./configure --help)。

  14. 类型make。就是这样!一切都是自动且非交互的。

    如果您遵循上述说明,特别是关于安装(步骤 11)的输出推荐的系统软件包 ./configure,以及关于并行构建(步骤 10),则在现代计算机上构建 Sage 需要不到一小时。 (否则,可能需要更长的时间。)

    该构建应该可以在所有完全支持的平台上正常运行。如果没有,我们想知道!

  15. 输入./sage来尝试一下。在 Sage 中,尝试例如2 + 2, plot(x^2)plot3d(lambda x, y: x*y, (-1, 1), (-1, 1)) 测试 2D 和 3D 中的简单计算和绘图。输入Ctrl+Dquit退出 Sage。

  16. 可选:键入make ptestlong测试文档中的所有示例(超过 200,000 行输入!)——这需要 10 分钟到几个小时。如果出现 2 到 3 次失败,请不要太担心,但请随时将logs/ptestlong.log包含错误的部分通过电子邮件发送到sage-support 邮件列表。如果出现大量失败,则表明您的构建存在严重问题。

  17. HTML 版本的文档 在 Sage 编译过程中构建的,并驻留在目录中 local/share/doc/sage/html/。您可能想在浏览器中将其添加为书签。

  18. 可选:如果您想构建文档的 PDF 版本,请运行make doc-pdf(这需要安装 LaTeX)。

  19. ./sage --optional可选:安装您感兴趣的可选软件包:通过键入或访问 软件包文档页面获取列表 。

  20. 可选:例如,sage在您的目录中创建指向已安装脚本的符号链接。这将允许您通过从任何地方键入来启动 Sage ,而不必键入完整路径或导航到 Sage 目录并键入。这可以通过运行来完成:PATH/usr/localsage./sage

    $ sudo ln -s $(./sage -sh -c 'ls $SAGE_ROOT/venv/bin/sage') /usr/local/bin
    
  21. 可选:将 SageMath 设置为现有 Jupyter 笔记本或 JupyterLab 安装中的 Jupyter 内核,如 Sage 安装手册中的“启动 SageMath”部分所述。

使用 PyPI 的替代安装

为了从 PyPI 在 Python 环境中安装 Sage,Sage 提供了 pip可安装包sagemath-standard

除非您需要将 Sage 安装到特定的现有环境中,否则我们建议创建并激活一个全新的虚拟环境,例如~/sage-venv/

        $ python3 -m venv ~/sage-venv
        $ source ~/sage-venv/bin/activate

作为第一个安装步骤,安装sage_conf,它在以下子目录中构建各种必备包~/.sage/

        (sage-venv) $ python3 -m pip install -v sage_conf

安装成功后,驾驶室会提供各种Python包。您可以使用以下命令列出轮子:

        (sage-venv) $ ls $(sage-config SAGE_SPKG_WHEELS)

如果这给出错误,指出sage-config未找到,请检查该pip install命令可能已打印的任何消息。您可能需要调整您的PATH,例如:

        $ export PATH="$(python3 -c 'import sysconfig; print(sysconfig.get_path("scripts", "posix_user"))'):$PATH"

现在安装驾驶室中的软件包和sage_setup 软件包,最后安装 Sage 库:

        (sage-venv) $ python3 -m pip install $(sage-config SAGE_SPKG_WHEELS)/*.whl sage_setup
        (sage-venv) $ python3 -m pip install --no-build-isolation -v sagemath-standard

上述说明安装了 Sage 的最新稳定版本。要安装最新的开发版本,请将开关添加--prepython3 -m pip install.

注意: PyPI 还有各种其他pip可安装的软件包,其名称中带有“sage”一词。其中一些由 SageMath 项目维护,一些由 SageMath 用户出于各种目的提供,还有一些与 SageMath 完全无关。不要使用包 sagesagemath。有关软件包的精选列表,请参阅 Sage 参考手册的软件包和功能一章。

SageMath Docker 镜像

Docker 状态

SageMath 在 Docker Hub 上可用,可以通过以下方式下载:

docker pull sagemath/sagemath

目前,仅稳定版本保持最新。

故障排除

如果您在构建 Sage 时遇到问题,请查看 Sage 安装指南,以及与您要安装的版本相对应的Sage 发布教程中特定于版本的 Sage 安装常见问题解答。

请随时在SageMath 论坛 sage 支持邮件列表中寻求帮助。Sage 安装指南中的故障排除部分 提供 了有关提供哪些信息的说明,以便我们可以更有效地提供帮助。

为圣人做出贡献

如果您想为 Sage 做出贡献,我们强烈建议您阅读 开发人员指南

Sage 具有用以下语言编写的重要组件:C/C++、Python、Cython、Common Lisp、Fortran 和一些 Perl。

目录布局

简化的目录布局(仅重要文件/目录):

SAGE_ROOT                 Root directory (create by git clone)
├── build
│   └── pkgs              Every package is a subdirectory here
│       ├── 4ti2/
│       …
│       └── zlib/
├── configure             Top-level configure script
├── COPYING.txt           Copyright information
├── pkgs                  Source trees of Python distribution packages
│   ├── sage-conf
│   │   ├── sage_conf.py
│   │   └── setup.py
│   ├── sage-docbuild
│   │   ├── sage_docbuild/
│   │   └── setup.py
│   ├── sage-setup
│   │   ├── sage_setup/
│   │   └── setup.py
│   ├── sage-sws2rst
│   │   ├── sage_sws2rst/
│   │   └── setup.py
│   └── sagemath-standard
│       ├── bin/
│       ├── sage -> ../../src/sage
│       └── setup.py
├── local  (SAGE_LOCAL)   Installation hierarchy for non-Python packages
│   ├── bin               Executables
│   ├── include           C/C++ headers
│   ├── lib               Shared libraries, architecture-dependent data
│   ├── share             Databases, architecture-independent data, docs
│   │   └── doc           Viewable docs of Sage and of some components
│   └── var
│       ├── lib/sage
│       │   ├── installed/
│       │   │             Records of installed non-Python packages
│       │   ├── scripts/  Scripts for uninstalling installed packages
│       │   └── venv-python3.9  (SAGE_VENV)
│       │       │         Installation hierarchy (virtual environment)
│       │       │         for Python packages
│       │       ├── bin/  Executables and installed scripts
│       │       ├── lib/python3.9/site-packages/
│       │       │         Python modules/packages are installed here
│       │       └── var/lib/sage/
│       │           └── wheels/
│       │                 Python wheels for all installed Python packages
│       │
│       └── tmp/sage/     Temporary files when building Sage
├── logs
│   ├── install.log       Full install log
│   └── pkgs              Build logs of individual packages
│       ├── alabaster-0.7.12.log
│       …
│       └── zlib-1.2.11.log
├── m4                    M4 macros for generating the configure script
│   └── *.m4
├── Makefile              Running "make" uses this file
├── prefix -> SAGE_LOCAL  Convenience symlink to the installation tree
├── README.md             This file
├── sage                  Script to start Sage
├── src                   Monolithic Sage library source tree
│   ├── bin/              Scripts that Sage uses internally
│   ├── doc/              Sage documentation sources
│   └── sage/             The Sage library source code
├── upstream              Source tarballs of packages
│   ├── Babel-2.9.1.tar.gz
│   …
│   └── zlib-1.2.11.tar.gz
├── venv -> SAGE_VENV     Convenience symlink to the virtual environment
└── VERSION.txt

有关更多详细信息,请参阅我们的开发人员指南

构建系统

这是 Sage 软件发行版构建系统的简要总结。完整的 Sage 系统有两个组件——Sage Python 库及其相关的用户界面,以及 Sage 主要依赖项的较大软件分发版(对于用户系统未提供的那些依赖项)。

Sage 的 Python 库是使用setup.py脚本构建和安装的,这是 Python 包的标准(Sage 的setup.py库很重要,但并不罕见)。

构建系统的其余部分大部分涉及以正确的相互关系顺序构建 Sage 的所有依赖项。 Sage 包含的依赖项称为 SPKG(即“Sage 包”)并列在 下build/pkgs

MakefileSage 构建系统的主要入口点是源树根部的顶层。与大多数使用 autoconf 的普通项目不同(Sage 也这样做,如下所述),它Makefile不会生成。相反,它包含一些高级目标和与引导系统相关的目标。尽管如此,我们仍然make <target>从源代码树的根开始运行——顶层中未明确定义的目标Makefile将传递到build/make/Makefile.

后者build/make/Makefile 由 autoconf 生成的 configure脚本使用 中的模板生成的build/make/Makefile.in。这包括构建 Sage 库本身的规则 ( make sagelib),以及构建和安装每个 Sage 依赖项的规则 (例如make gf2x)。

如果脚本configure本身尚未构建,则可以通过运行脚本来生成bootstrap(后者需要安装GNU 自动工具)。顶层Makefile也会自动处理这个问题。

总而言之,make python3在源树的顶层运行命令如下所示:

  1. make python3
  2. ./bootstrap如果configure需要更新则运行
  3. 如果需要更新,./configure请使用任何先前配置的选项运行build/make/Makefile
  4. 将目录更改为build/make并运行install脚本 - 这只不过是运行的前端make -f build/make/Makefile python3,它设置一些必要的环境变量并记录一些信息
  5. build/make/Makefile包含实际的构建规则python3;这包括python3首先构建所有的依赖项(以及它们的依赖项,递归地);实际的软件包安装是通过sage-spkg程序执行的

搬迁

构建 Sage 后不支持移动SAGE_ROOT或目录。SAGE_LOCAL如果您确实移动了目录,则必须make distclean从头开始重新运行并构建 Sage。

对于系统范围的安装,您必须将 Sage 构建为“普通”用户,然后以 root 身份可以更改权限。请参阅安装指南 了解更多信息。

再分配

您的本地 Sage 安装几乎与任何“开发人员”安装完全相同。您可以对文档、源代码等进行更改,并像我们一样轻松地将完整结果打包以便重新分发。

  1. 要使用当前安装的软件包制作二进制发行版,请访问sagemath/binary-pkg

  2. 要制作您自己的 Sage 源 tarball,请输入:

    $ make dist
    

    结果放置在目录中dist/

附带软件的更改

Sage 中包含的所有软件均受各自作者的版权保护,并根据与GPL 版本 3 或更高版本兼容的开源许可证发布。有关更多详细信息,请参阅COPYING.txt 。

源代码位于目录中未修改(尽可能)的 tarball 中 upstream/。其余的描述、版本信息、补丁和构建脚本位于随附的 build/pkgs/<packagename>目录中。该目录是 Sage git 存储库的一部分。

版权所有 (C) 2005-2024 Sage 开发团队

https://www.sagemath.org

About

SageMath 的主要存储库。现在开放接受问题和请求请求。

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 71.4%
  • Cython 24.9%
  • C++ 1.7%
  • HTML 0.8%
  • M4 0.4%
  • Shell 0.3%
  • Other 0.5%