运行main.py遇ModuleNotFoundError:找不到conf模块的解决求助
解决Python模块导入错误:ModuleNotFoundError: No module named 'conf'
项目文件结构
root |- src | |-bot | | |-conf | | | |-data.py | | |-model.py |- main.py
相关代码
model.py 代码
from conf.data import old_data def somemodel(new_data): old_data += new_data # (more working with data)
main.py 代码
from src.bot.model import somemodel def main(): somemodel(new_data)
问题情况
单独运行model.py时,导入conf.data完全正常;但在根目录下运行main.py,就会抛出错误:
ModuleNotFoundError: No module named 'conf'
原因很明确:运行model.py时,Python把bot目录当作模块查找根,能找到conf;但跑main.py时,查找根是root目录,自然找不到conf文件夹。
解决方法
方法1:给model.py换相对导入
把model.py里的导入语句改成相对路径,基于当前文件的位置引用conf:
from .conf.data import old_data def somemodel(new_data): old_data += new_data # (more working with data)
注意:用了相对导入后,不能直接运行model.py(此时它不属于包的一部分),但从main.py导入调用完全没问题。
方法2:给model.py用绝对导入
改成基于项目根目录的绝对路径导入,不管从哪运行,只要root在Python的模块查找路径里,就能正常导入:
from src.bot.conf.data import old_data def somemodel(new_data): old_data += new_data # (more working with data)
方法3:设置PYTHONPATH环境变量
在运行main.py之前,把项目根目录root加到PYTHONPATH里:
- Linux/macOS终端:
export PYTHONPATH=/path/to/root:$PYTHONPATH python main.py
- Windows命令行:
set PYTHONPATH=C:\path\to\root;%PYTHONPATH% python main.py
这样Python会把root纳入模块查找范围,model.py里的from conf.data import...就能被正确解析成src/bot/conf/data。
内容的提问来源于stack exchange,提问作者Aurorachilles
相关产品推荐
相关产品推荐

