【发布时间】:2019-07-03 06:18:45
【问题描述】:
我遇到了类似的问题,可以简化如下:
例如我的文件结构如下:
----folder
---- main.py
---- math.py
我在math.py 中定义了一个函数,我想在main.py 中导入这个math.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)
我的问题:
-
如果我只想在路径
folder中导入与内置模块同名的模块math.py,该怎么办? 如果在
main.py中我想同时使用math.py中定义的math.f(x)和内置math.acos(x),我该怎么办?
PS:我遇到了类似的问题,因为我十年前有人写了很长的代码。当时并没有这样名字的内置模块(其实不是math模块。我只是通过上面的问题简化了问题)。并且这个模块的功能已经在很多地方使用。因此几乎不可能更改模块的名称,因为如果是这样,我需要仔细更改所有站点module.function()。
【问题讨论】:
标签: python-3.x import python-import