Python 常见问题与总结
python 运行脚本与运行模块
在如下的场景,工作目录为 root,python src/script.py
和 python -m src.script
有什么区别?这两种情况下如何 import
其他模块。
1 | root/ |
一些直接的结论有:
- 运行脚本会把脚本所在目录(上述场景中的src)添加到
sys.path[0]
,运行模块都会将工作目录(对应上述场景的root)添加到sys.path[0]
- import 的模块必须在
sys.path
中,而sys.path
是由sys.path[0]
和PYTHONPATH
等决定的 - 运行模块时会有包的上下文,而相对导入必须在包的上下文中进行(如 from .utils import some_function),且相对导入必须使用 from … import … 的形式,不能使用 import … 的形式