问题描述
如果在Pycharm类似软件里不报错。但命令行python run.py
,报错:ModuleNotFoundError: No module named 'xxx'
。
解决方案
大概率import模块的时候使用的是相对路径,只需将模块的 path 添加到 sys.path
假设目录结构如下:
Project
├─module1
│ └─main.py
└─module2
└─a.py
我们在main.py
中导入模块:
# main.py
from module2.a import *
那我们其实需要在 sys.path 中添加 module2 的路径:
# main.py
import sys
import os
sys.path.append(os.path.dirname(sys.path[0]))
from module2.a import *
我们来解释一下,sys.path[0]
表示main.py
的文件路径。
Project
├─module1
│ └─main.py
└─module2
└─a.py
os.path.dirname()
表示上一级目录,所以sys.path.append(os.path.dirname(sys.path[0]))
添加了 Project 目录,这时候自然能导入 module2 了
Project
├─module1
│ └─main.py
└─module2
└─a.py