Python从导入模块导入模块问题
我有这样一个项目结构:Python从导入模块导入模块问题,python,Python,我有这样一个项目结构: main.py src\ foo.py bar.py 我正在尝试从main.py导入foo.py # main.py import src.foo # I also tried # from src import foo # or # from src.foo import * # foo.py import bar # also tried # from bar import * 但是foo.py导入bar.py # main.py import sr
main.py
src\
foo.py
bar.py
我正在尝试从main.py
导入foo.py
# main.py
import src.foo
# I also tried
# from src import foo
# or
# from src.foo import *
# foo.py
import bar
# also tried
# from bar import *
但是foo.py
导入bar.py
# main.py
import src.foo
# I also tried
# from src import foo
# or
# from src.foo import *
# foo.py
import bar
# also tried
# from bar import *
但它有modulenofounderror
ModuleNotFoundError: No module named 'bar'
当我在foo.py
中这样做时,它起作用了:
import src.bar
但我不想每次进口东西时都这么做。为什么导入的模块不能使用自己的父目录?我如何修复它?您的(正常)选项包括:
import src.bar # Absolute import
或
import bar
在Python 3中不起作用,因为它有一些基本问题。想象一棵树像:
spam\
math.py
eggs.py
如果eggs.py
需要内置的math
模块,并且在Python 2上导入了math
,那么它不会得到内置的,而是得到spam.math
。而且它根本没有合理的方法来获取内置的数学
(除了一个\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
导入,它为您提供了Python 3风格的绝对导入)
是引用同级模块而不显式命名父包的方法。使用它。这能回答您的问题吗<代码>从。导入条码否。他正在尝试运行模块,我正在尝试导入它。^^我不想每次都这样做。一定有办法直接导入它。我记得我做过。作为一个包,它不应该依赖于导入模块。疯狂的选项包括修改
sys.path
,这样您自己的目录就是其中的一部分;但这不是一个明智的选择,因为它可能导致一个给定的模块被单独导入两次,因为它在src.bar
和bar
下都可见。谢谢。所以基本上你是说我不能那样做。@OneNose:我是说来自。导入条码是正确的,并且执行您要求的操作。其他解决方案一开始很糟糕,然后变得更糟。导入条形图的唯一方法是降级到Python 2,我不推荐使用Python 2,原因有很多,从它在将近一年前结束使用开始。