sag中缺少python模块

2024-09-30 02:23:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我安装了sage4.7.1,遇到了一个奇怪的问题。我的许多使用deepcopy()和uniq()等函数的旧脚本不再将它们识别为全局名称。我已经能够通过逐个导入python模块来解决这个问题,但这是相当乏味的。但是当我启动命令行Sage接口时,我可以输入“list2=deepcopy(list1)”,而不需要导入复制模块,这样就可以正常工作了。命令行Sage怎么可能识别全局名“deepcopy”,但如果我加载的脚本使用相同的名称,它就无法识别它?在

抱歉,还不熟悉stackoverflow。我输入:“sage_4.7.1/sage”启动命令行界面;然后输入“load”jbom.py“加载我在python脚本中定义的所有函数。当我使用脚本中的一个函数时,它会运行几秒钟(复杂函数),然后我会使用Sage通常将其作为全局名称的函数(deepcopy、uniq等),但由于某些原因,我加载的脚本不知道该函数是什么。再说一遍,我的剧本jbom.py就像我所描述的那样,我在上一次做这个特别的研究的时候曾经工作过。在

如果我用'load'也没什么区别jbom.py'或'导入jbom'。这两个方法都得到我在脚本中定义的函数(但是我必须使用jbom)。在第二种情况下),两者都会得到相同的错误,即“deepcopy”不是全局名称。在

回复帝斯曼:我在描述这个问题时太草率了,对此我很抱歉。我创造了一个新剧本'实验.py'以“import jbom”作为第一行。在中执行函数实验.py识别中的函数jbom.py但是deepcopy没有被识别。我试着装jbom.py作为“负载”jbom.py“我可以像几个月前那样使用这些函数。那么,这仅仅是没有正确使用import/load等的脚本分层问题吗?在

解决:我加了“从圣人。所有人导入*”到jbom.py现在我可以装了实验.py调用函数并执行jbom.py功能正常。从Sage文档中的import/load我真的不知道我到底做错了什么。在


Tags: 模块函数命令行pyimport脚本名称定义
1条回答
网友
1楼 · 发布于 2024-09-30 02:23:35

好吧,事情是这样的:

您只能import.py结尾的文件(忽略.py[co]),这些是标准的Python文件,并且没有准备好,因此1/3 == int(0),而不是{},并且您没有from sage.all import *的等价物。在

您可以load和{}同时使用.py和{}文件(以及.pyx和{}和{})。两者都可以访问Sage定义,但是.py文件没有准备好(因此y=17使y成为Pythonint),而{}文件是(所以y=17使y成为SageInteger)。在

因此import jbom这里的工作方式与Python中的工作方式相同,而且您无法访问Sage在作用域中所放置的内容。load等都很方便,但它们不能很好地扩展到更大的程序。我过去曾提议改善这一点,并使.sage脚本减少二等公民,但在做什么和做这件事的精力上还没有达成一致。同时,最好的办法是从sage.all导入。在

相关问题 更多 >

    热门问题