”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > SageMath 安装

SageMath 安装

发布于2024-08-22
浏览:647

SageMath Installation

SageMath 是一个免费的开源数学软件系统,它构建在许多现有开源软件包的基础上,包括 NumPy、SciPy、matplotlib、Sympy、Maxima、GAP、FLINT、R 和更多的。与 Magma、Maple、Mathematica 和 MATLAB 等专有软件不同,Sage 可以免费使用,并允许您查看和修改源代码。如果您熟悉 Python,您会对 Sage 感到宾至如归,因为它通过一组强大的数学工具扩展了 Python。

开始使用 Sage 的最简单方法是在名为 CoCalc 的平台上基于浏览器的工作簿中运行代码。 CoCalc 的免费层提供了多种好处,包括协作、自动依赖关系管理以及无需在本地安装软件即可方便地执行 Sage 代码。然而,在使用 CoCalc 一段时间后,我发现自己想要更快的设置,不受云环境的限制。这导致我在我的机器上本地安装 Sage。

如果您运行的是 Windows,安装 Sage 需要一些额外的步骤。

  1. 下载适用于 Linux 的 Windows 子系统。确保您使用的是 WSL2。
  2. 阅读搭建WSL开发环境也很有帮助。

您可以在 Sage 安装指南中找到本地安装的说明。

安装 Sage 的方法有多种,每种方法都有其优点。从源代码安装 Sage 提供了最大的灵活性,但这是一个漫长的过程,可能会带来一些挑战。安装必要的依赖项可能需要相当长的时间,并且用于构建 Sage 的 make 命令也需要一些耐心,具体取决于您的计算机资源。

对于那些寻求更简单、更快的安装过程的人来说,使用 conda-forge 是一个很好的选择。 Conda-forge 是社区驱动的 conda 软件包集合,可以轻松安装和管理 Sage,而无需处理源代码构建的复杂性。开始方法如下:

curl -L -O "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh"
bash Miniforge3-$(uname)-$(uname -m).sh
conda create -n sage sage python=3.11

通过 conda 安装 Sage 后,您将看到类似以下内容的消息。请注意所提供的说明,它们将指导您如何激活和管理新的 Sage 环境:

Transaction finished

To activate this environment, use:

    micromamba activate /home/samuel-lubliner/miniforge3

Or to execute a single command in this environment, use:

    micromamba run -p /home/samuel-lubliner/miniforge3 mycommand

installation finished.
Do you wish to update your shell profile to automatically initialize conda?
This will activate conda on startup and change the command prompt when activated.
If you'd prefer that conda's base environment not be activated on startup,
   run the following command when conda is activated:

conda config --set auto_activate_base false

You can undo this by running `conda init --reverse $SHELL`? [yes|no]
[no] >>> no

此提示询问您是否希望 conda 在每次 shell 启动时自动初始化。我更喜欢保持环境清洁,所以我选择了不。此选择使基础环境在启动时保持非活动状态,这有助于防止命令提示符因不必要的环境激活而混乱。如果您喜欢此设置,请在出现提示时键入 no。

You have chosen to not have conda modify your shell scripts at all.
To activate conda's base environment in your current shell session:

eval "$(/home/samuel-lubliner/miniforge3/bin/conda shell.YOUR_SHELL_NAME hook)"

To install conda's shell functions for easier access, first activate, then:

conda init

Thank you for installing Miniforge3!

手动激活您的环境可确保您保持对 conda 环境加载时间和方式的控制。如果您使用多个环境,此方法很有用。

由于我选择不让 conda 修改我的 shell 脚本,因此我使用以下命令手动运行 Sage。这种方法确保了一个干净的环境,并让我可以控制何时激活 Sage:

samuel_lubliner@DESKTOP-QGSGOAI:~$ eval "$(/home/samuel_lubliner/miniforge3/bin/conda shell.bash hook)"
(base) samuel_lubliner@DESKTOP-QGSGOAI:~$ conda activate sage
(sage) samuel_lubliner@DESKTOP-QGSGOAI:~$ sage -n jupyter
  • 第一个命令在当前 shell 中初始化 conda。
  • 第二条命令激活 sage 环境。
  • 第三条命令使用 Jupyter 笔记本界面启动 Sage。

注意,(base)表示conda base环境已激活,(sage)表示sage环境已激活。每次运行这些命令可能会变得重复,因此让我们通过创建 bash 脚本来自动化此过程。我们可以创建文件 sage_nb.sh。如果您使用 WSL,文档建议:

#!/bin/bash
# Switch to desired windows directory
cd /mnt/c/path/to/desired/starting/directory
# Start the Jupyter notebook
SAGE_ROOT/sage --notebook
# Alternatively you can run JupyterLab - delete the line above, and uncomment the line below
#SAGE_ROOT/sage --notebook jupyterlab

就我而言,我安装了 JupyterLab,因为我更喜欢它更现代的界面。这是我的脚本:

#!/bin/bash
# Start JupyterLab
/home/samuel_lubliner/miniforge3/envs/sage/bin/sage --notebook jupyterlab

要运行脚本,您首先需要使其可执行:

chmod ug x ~/sage_nb.sh

现在您可以在任何想要启动 Sage 的时候运行脚本:

cd ~
./sage_nb.sh

如果一切设置正确,运行脚本将在终端中启动 Jupyter 服务器。从这里,您可以开始在浏览器中使用 Sage。

如果您更喜欢用户友好的方法,您可以通过在桌面上创建可单击的快捷方式来进一步使用此 bash 脚本。这允许您双击启动 Sage 和 JupyterLab。您可以在 SageMath 文档中找到有关如何创建此快捷方式的详细说明。

版本声明 本文转载于:https://dev.to/samuellubliner/sagemath-installation-2pep?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 跨域场景下CORS何时使用预检请求?
    跨域场景下CORS何时使用预检请求?
    CORS:了解跨域请求的“预检”请求跨域资源共享 (CORS) 在制作 HTTP 时提出了挑战跨域请求。为了解决这些限制,引入了预检请求作为解决方法。预检请求说明预检请求是先于实际请求(例如 GET 或 POST)的 OPTIONS 请求)并用于与服务器协商请求的权限。这些请求包括两个附加标头:Ac...
    编程 发布于2024-11-05
  • 如何使用 PHP 的 glob() 函数按扩展名过滤文件?
    如何使用 PHP 的 glob() 函数按扩展名过滤文件?
    在 PHP 中按扩展名过滤文件使用目录时,通常需要根据扩展名检索特定文件。 PHP 提供了一种使用 glob() 函数来完成此任务的有效方法。要按扩展名过滤文件,请使用语法:$files = glob('/path/to/directory/*.extension');例如,要检索目录 /path/...
    编程 发布于2024-11-05
  • 理解 JavaScript 中的 Promise 和 Promise Chaining
    理解 JavaScript 中的 Promise 和 Promise Chaining
    什么是承诺? JavaScript 中的 Promise 就像你对未来做某事的“承诺”。它是一个对象,表示异步任务的最终完成(或失败)及其结果值。简而言之,Promise 充当尚不可用但将来可用的值的占位符。 承诺国家 Promise 可以存在于以下三种状态之一: ...
    编程 发布于2024-11-05
  • 安全分配
    安全分配
    今天,关于 JavaScript 中安全赋值运算符 (?=) 的新提案引起了热烈讨论。我喜欢 JavaScript 随着时间的推移而不断改进,但这也是我最近在一些情况下遇到的问题。我应该将快速示例实现作为函数,对吧? 如果您还没有阅读该提案,以下是其建议: const [error, value] ...
    编程 发布于2024-11-05
  • 创建队列接口
    创建队列接口
    创建字符队列的接口。 需要开发的三个实现: 固定大小的线性队列。 循环队列(复用数组空间)。 动态队列(根据需要增长)。 1 创建一个名为 ICharQ.java 的文件 // 字符队列接口。 公共接口 ICharQ { // 向队列中插入一个字符。 void put(char ch); ...
    编程 发布于2024-11-05
  • Pip 的可编辑模式何时对本地 Python 包开发有用?
    Pip 的可编辑模式何时对本地 Python 包开发有用?
    使用 Pip 在 Python 中利用可编辑模式进行本地包开发在 Python 的包管理生态系统中,Pip 拥有“-e”(或'--editable') 特定场景的选项。什么时候使用这个选项比较有利?答案在于可编辑模式的实现,官方文档中有详细说明:“从本地以可编辑模式安装项目(即 se...
    编程 发布于2024-11-05
  • 当您在浏览器中输入 URL 时会发生什么?
    当您在浏览器中输入 URL 时会发生什么?
    您是否想知道当您在浏览器中输入 URL 并按 Enter 键时幕后会发生什么?该过程比您想象的更加复杂,涉及多个步骤,这些步骤无缝地协同工作以提供您请求的网页。在本文中,我们将探讨从输入 URL 到查看完全加载的网页的整个过程,阐明使这一切成为可能的技术和协议。 第 1 步:输入 U...
    编程 发布于2024-11-05
  • 如何有效管理大量小HashMap对象的“OutOfMemoryError:超出GC开销限制”?
    如何有效管理大量小HashMap对象的“OutOfMemoryError:超出GC开销限制”?
    OutOfMemoryError: Handling Garbage Collection Overhead在Java中,当过多时会出现“java.lang.OutOfMemoryError: GC Overhead limit allowed”错误根据 Sun 的文档,时间花费在垃圾收集上。要解决...
    编程 发布于2024-11-05
  • 为什么在 Python 列表初始化中使用 [[]] * n 时列表会链接在一起?
    为什么在 Python 列表初始化中使用 [[]] * n 时列表会链接在一起?
    使用 [[]] * n 进行列表初始化时的列表链接问题使用 [[]] 初始化列表列表时 n,程序员经常会遇到一个意想不到的问题,即列表似乎链接在一起。出现这种情况是因为 [x]n 语法创建对同一基础列表对象的多个引用,而不是创建不同的列表实例。为了说明该问题,请考虑以下代码:x = [[]] * ...
    编程 发布于2024-11-05
  • Python 变得简单:从初学者到高级 |博客
    Python 变得简单:从初学者到高级 |博客
    Python Course Code Examples This is a Documentation of the python code i used and created , for learning python. Its easy to understand and L...
    编程 发布于2024-11-05
  • 简化 TypeScript 中的类型缩小和防护
    简化 TypeScript 中的类型缩小和防护
    Introduction to Narrowing Concept Typescript documentation explains this topic really well. I am not going to copy and paste the same descrip...
    编程 发布于2024-11-05
  • 何时应该使用 session_unset() 而不是 session_destroy() ,反之亦然?
    何时应该使用 session_unset() 而不是 session_destroy() ,反之亦然?
    理解 PHP 中 session_unset() 和 session_destroy() 的区别PHP 函数 session_unset() 和 session_destroy() 有不同的用途管理会话数据。尽管它们在清除会话变量方面有明显相似之处,但它们具有不同的效果。session_unset(...
    编程 发布于2024-11-05
  • 如何选择在 C++ 中解析 INI 文件的最佳方法?
    如何选择在 C++ 中解析 INI 文件的最佳方法?
    在 C 中解析 INI 文件:各种方法指南在 C 中处理初始化 (INI) 文件时,开发人员经常遇到有效解析这些文件以提取所需信息的挑战。本文探讨了用 C 解析 INI 文件的不同方法,讨论了它们的优点和注意事项。本机 Windows API 函数一种方法是利用 Windows API 函数INI ...
    编程 发布于2024-11-05
  • 代码日:重新聚焦
    代码日:重新聚焦
    2024 年 8 月 19 日星期一 今天是我 100 天编程之旅的一半! ?除了记录我的进步之外,我还喜欢分享学习技巧。我最喜欢的新方法之一是番茄工作法,它需要专注于一项任务 25 分钟,然后休息 5 分钟。四个周期后,您会休息更长的时间。这有助于保持注意力并防止倦怠。 我尝试过 App Stor...
    编程 发布于2024-11-05
  • 为什么我在 Visual Studio 2015 中收到编译器错误 C2280“尝试引用已删除的函数”?
    为什么我在 Visual Studio 2015 中收到编译器错误 C2280“尝试引用已删除的函数”?
    Visual Studio 2015 中编译器错误 C2280“尝试引用已删除的函数”Visual Studio 2015 编译器与其 2013 的前身不同,自动为定义移动构造函数或移动赋值运算符的类生成删除的复制构造函数。 C 标准强制执行此行为,以防止在首选移动的情况下发生意外复制。在您的代码片...
    编程 发布于2024-11-05

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3