gpt4 book ai didi

python-3.x - 导入与python 3中的内置模块名称相同的模块

转载 作者:行者123 更新时间:2023-12-01 13:16:21 25 4
gpt4 key购买 nike

我遇到了一个类似的问题,可以简化如下:

例如我有一个文件结构如下:

----folder
---- main.py
---- math.py

我在 math.py 中定义了一个函数我想导入这个 math.pymain.py .
math.py 中的代码正在关注
# math.py
def f(x) :
return x**3

如果我在 main.py 中编写代码如下
# main.py
import math

def main() :
print(math.f(3))

if __name__ == "__main__":
main()

然后返回 AttributeError: module 'math' has no attribute 'f'
如果我在 main.py 中编写代码如下
# main.py
from . import math

def main() :
print(math.f(3))

if __name__ == "__main__":
main()

然后返回 ImportError: cannot import name 'math' from '__main__' (main.py)
我的问题:
  • 如果我 仅限 想导入模块math.py在路径 folder与内置模块同名,我该怎么办?
  • 如果在 main.py我想使用 两个 math.f(x)在我的 math.py 中定义和内置 math.acos(x) , 我该怎么办?

  • PS:我遇到了类似的问题,因为我十年前有人写了很长的代码。当时还没有内置的这个名字的模块(实际上不是 math模块。我只是通过上面的问题简化了问题)。并且这个模块的功能已经在很多地方使用。因此几乎不可能更改模块的名称,因为如果是这样,我需要仔细更改所有站点 module.function() .

    最佳答案

    在内置模块之后命名模块是非常糟糕的做法。我建议您将 math.py 命名为其他名称。

    话虽如此,您可以使用带有 imp 的路径导入它:

    import imp
    math = imp.load_source('math', './math.py')

    关于python-3.x - 导入与python 3中的内置模块名称相同的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54602023/

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