creamidea / creamidea.github.com

冰糖火箭筒&&蜂蜜甜甜圈
https://creamidea.github.io/
4 stars 4 forks source link

Python Import Problem #31

Open creamidea opened 3 years ago

creamidea commented 3 years ago

python 导入分为绝对路径导入和相对路径导入,之前一直不理解相对是怎么相对,直到看到这个:

image

也就是说,python xx.py 这里的 xx.py 就是主模块,假设代码如下

from .somepkg import func1

他里面的相对引用会变成 __main__.somepkg ,而这个显然是找不到的。如果要使其能够运行,需要将相对路径变成绝对路径

from somepkg import func1

或者把 xx.py 变成一个子模块,让上层变成主模块,比如变成如下结构

project
|- lib
   |- __init__.py
   `- xx.py
`- main.py

main.py 的代码

from lib import xx
creamidea commented 3 years ago

reference: