导入包问题
来源:7-12 入口文件和普通模块内置变量的区别
慕斯卡2501097
2018-01-06
已经有路径结构:.\pg\p1.py(pg目录下有__init__.py)和.\pg\t\p2.py 在p2.py中使用import pg.p1为什么会报错呢:详细错误:ModuleNotFoundError: No module named
写回答
3回答
-
亜門
2018-01-07
因为绝对导入是从p2.py同级别的文件里找,import pg.p1,会先在t这个包里面找pg,没有找到,自然就报错了。
有两种方法
方法一:因为入口文件不能直接使用相对导入,所以可以在最外面建一个main.py的文件作为入口文件。
在main.py里面写入import pg.t.p2
在p2里面写入from ..p1 import a(比如p1中有定义到变量a)
执行main.py文件就可以。
方法二:
把p2.py变成一个模块去执行。我的package3相当于你的pg。
python -m pg.t.p2
10 -
7七月
2018-01-08
麻烦把目录结构直接贴出来,我来看一下。
00 -
忘尘莫及
2018-01-06
我认为是模块的路径有问题。使用默认IDLE时,为了让IDLE可以找到模块,需要将模块文件放在python的安装目录下。我尝试用vscode输出结果,也是将模块文件放在python的安装目录下才成功的。希望老师进一步解答。
00
相似问题
