在python中导入系统模块

2024-04-30 01:09:58 发布

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

背景:

我正在写一个针对pypy的符号包,用于表示表达式和获取导数。目前不致力于简化或诸如此类的工作,只是区分和评估。你知道吗

问题:

我正在编写表达式类来表示数学中的许多函数(sqrt、log、exp、sin、cos等)。我已经命名了这个在math中运行的模块,以与您自然找到所述函数的模块一致。我将来可能会对cmath和任何其他数学感兴趣的模块做同样的事情。我的模块是更大的包ldb.algebra的一部分,因此名称math不会与基命名空间中的任何内容发生冲突。但是,为了计算表达式,我需要在ldb.algebra.math模块中导入系统math模块,而我不能在我的math模块(或者在相同级别的包中的任何其他模块)中这样做。以下是我目前的基本路线:

ldb/
    __init__.py - empty
    algebra/
        __init__.py - empty
        math.py

ldb/代数内容/数学.py作为问题的一个例子:

import math

my_sin = math.sin

显然不是很有用,但它显示了这个想法。我正在使用python2(或者说pypy代表python2)。我发现我可以通过创建一个子包来解决这个问题,在这个子包下创建一个模块,比如说sys_math,在这个模块中导入math,并公开必要的函数,但是这看起来是一个很大的工作和难看的混乱。你知道吗

所以我的问题是:我能在仍然有一个名为ldb.algebra.math的模块的情况下得到系统math模块吗?可能是__init__.py文件中的一些有趣的东西,比如使模块数学化,然后以某种方式更改__init__.py中的名称,或者以某种特殊的方式导入系统模块而不是我自己。你知道吗

到目前为止,我丑陋的解决方案是:

ldb/
    algebra/
        extra_package/
            __init__.py - empty
            sys_math.py

系统内容_数学.py地址:

import math

sin = math.sin

Tags: 模块函数py内容init表达式系统数学
1条回答
网友
1楼 · 发布于 2024-04-30 01:09:58
from __future__ import absolute_import

将其放在模块的顶部以禁用隐式相对导入。然后import math将导入内置的math模块,如果要使用相对导入,则必须使用from . import math这样的语法显式地进行导入。你知道吗

相关问题 更多 >