gpt4 book ai didi

Python:导入具有非 py 扩展名的库

转载 作者:行者123 更新时间:2023-11-28 20:51:24 25 4
gpt4 key购买 nike

我必须导入名为 functions.sage 的库。我该怎么做?我试过:

__import__('functions.sage')

还有这个:

import imp
imp.load_source('fun', 'functions.sage')

编辑:

其实我想导入sage lib 成圣人。该库包含特定于 sage 的代码。我厌倦了圣人解释的上述变体。两者都给了我“无功能模块”或类似的东西。

最佳答案

这不是个好主意。 (这正好在答案和评论之间的分界线上,但我想举一些难以塞进评论中的例子。)

.sage 文件要么包含特定于 Sage 的语法和行为,要么不包含。如果没有,您可以简单地将其重命名为 .py,或创建一个符号链接(symbolic link),或其他任何方式。但如果是这样,那么在它可以在 Python 中工作之前,无论如何都必须对其进行预解析。

例如,如果“functions.sage”文件写入:

x = 2/3

将文件加载到sage中,得到一个QQ元素:

sage: x
2/3
sage: parent(x)
Rational Field

但在 Python 2 中,您只需获取 int(0)。

它可能会使用 Sage 风格的范围:

sage: [1,3,..,11]
[1, 3, 5, 7, 9, 11]

或其他 Sage 功能:

sage: F.<x,y> = GF(2)[]
sage: F
Multivariate Polynomial Ring in x, y over Finite Field of size 2

所有这些都由 Sage 预解析器处理,而不是由 Python 处理。在幕后,它正在这样做:

sage: preparse("F.<x,y> = GF(2)[]") 
"F = GF(Integer(2))['x, y']; (x, y,) = F._first_ngens(2)"

更新:显然我没有把问题说清楚。

sage: import imp 
sage: !cat functions.sage
x = 2/3
sage: functions = imp.new_module("functions")
sage: execfile("functions.sage", vars(functions))
sage: dir(functions)
['__builtins__', '__doc__', '__name__', '__package__', 'x']
sage: functions.x
0
sage: type(functions.x)
<type 'int'>

无论如何,您将不得不通过预解析器传递 functions.sage。

关于Python:导入具有非 py 扩展名的库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9839930/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com