如何将Python的常规包导入Sage?

Fau*_*uto 4 package sage python-3.x

我正在 Jupyter 笔记本的帮助下编写 Sage 脚本。一切都很好,直到我尝试导入常规 Python 包/库、我用pip或以其他方式安装的东西并位于/usr/local/lib/python3.8/dist-packages/. 比如说 CoolProp,一个流体属性包。当我尝试时:

import CoolProp.CoolProp as CP
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
<ipython-input-2-b88e3e84ef2b> in <module>
----> 1 import CoolProp.CoolProp as CP

ModuleNotFoundError: No module named 'CoolProp'
Run Code Online (Sandbox Code Playgroud)

我认为我应该以某种方式提供 CoolProp 的路径,但如何在脚本中执行此操作?我在 ~/sage-9.3 下安装了 Sage。

Sam*_*vre 5

为 Sage 安装 Python 包

应该为 Sage 的 Python 安装这些软件包,根据您安装 Sage 的方式,它可能不是您的系统 Python。

如果sage在您的 PATH 中,请在终端中尝试以下操作:

sage --pip install CoolProp
Run Code Online (Sandbox Code Playgroud)

否则,使用完整路径:

~/sage-9.3/sage --pip install CoolProp
Run Code Online (Sandbox Code Playgroud)

或者,在 Sage 提示符下(或在运行 Sage 内核的 Jupyter 笔记本中)运行:

%pip install CoolProp
Run Code Online (Sandbox Code Playgroud)

之后,导入应该可以进行。

包的副本

避免保留包的重复副本的一种方法是始终使用 Sage 的 Python。

sage --python可以通过运行或 来启动它~/sage-9.3/local/bin/python

其他可能性包括使用别名:

sage --pip install CoolProp
Run Code Online (Sandbox Code Playgroud)

或者

~/sage-9.3/sage --pip install CoolProp
Run Code Online (Sandbox Code Playgroud)

或调整你的PATHshell 变量:

%pip install CoolProp
Run Code Online (Sandbox Code Playgroud)

定义别名或设置 PATH 的行可以添加到 shell 设置文件中(可以是.bashrc.bash_profile.zshrc或类似的文件)。

PATH更好的是,将 Sage 的 Python 的符号链接添加到比系统 Python更早的某个位置:

alias python='sage --python'
Run Code Online (Sandbox Code Playgroud)

或者,如果出现权限错误,

alias python='~/sage-9.3/local/bin/python'
Run Code Online (Sandbox Code Playgroud)

优点是该命令可以一次性运行,无需更改 shell 设置文件。

在所有情况下,运行python都会运行 Sage 的 Python。

要停止使用 Sage 的 Python 作为主 Python,请删除定义别名的行或从 shell 设置文件中调整 PATH,或者删除符号链接(如果您使用该解决方案):

PATH=~/sage-9.3/local/bin:$PATH
Run Code Online (Sandbox Code Playgroud)

或者,如果出现权限错误,

ln -s ~/sage-9.3/local/bin:$PATH /usr/local/bin
Run Code Online (Sandbox Code Playgroud)

专用环境

一种现代趋势是为您所从事的每个项目使用专用环境,并将该环境的描述存储在文本文件中。

这可以使用 Python 的 venv 或 Conda 来完成。