背景

现有目录

├── main.py
├── pkg
│   ├── arithmetic.py
│   └── power.py

调用关系是: main 调用 power 调用 arithmetic

想既可以调试 main.py 代码,有可以调试 power.py 里的代码,当执行

python pkg/power.py 
10的二次方是100

python main.py 
报错 ModuleNotFoundError: No module named 'arithmetic'

解决办法

(1) 调整 power 文件

调整为包内引用

from . import arithmetic as ar
# import pkg.arithmetic as ar
#import arithmetic as ar #不能同时满足

(2) 调整调用方式

python -m mod 表示 run library module as a script (terminates option list),也就是 将库模块作为脚本运行,

python -m pkg.power
10的二次方是100

python main.py 
2 的平方是4
#建议
python -m main
2 的平方是4

[!TIP]

以后自己还是用 python -m xxx(无py) 执行代码吧

文件内容

arithmetic 文件

def multiply(a,b):
    return a*b

power 文件

# from . import arithmetic as ar
# import pkg.arithmetic as ar
import arithmetic as ar #不能同时满足

def pow2(a):
    return ar.multiply(a,a)

if __name__ == '__main__':

    print('10的二次方是'+str(pow2(10)))

main 文件

from pkg.power import pow2

print(f"2 的平方是{pow2(2)}")