导入包问题

来源: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

//img.mukewang.com/szimg/5a520f520001bea719040973.jpg

1
0

7七月

2018-01-08

麻烦把目录结构直接贴出来,我来看一下。

0
0

忘尘莫及

2018-01-06

我认为是模块的路径有问题。使用默认IDLE时,为了让IDLE可以找到模块,需要将模块文件放在python的安装目录下。我尝试用vscode输出结果,也是将模块文件放在python的安装目录下才成功的。希望老师进一步解答。

0
0

Python3.8系统入门+进阶 (程序员必备第二语言)

语法精讲/配套练习+思考题/原生爬虫实战

14866 学习 · 4500 问题

查看课程