python命令行运行找不到自定义模块

报错ImportError: No module named 'XXX'

可能小伙伴们在pycharm运行一切正常,但是到命令行中运行py文件,就会报错

在python中,一个py文件就是一个模块,导入模块等于导入文件。

是文件,就有文件路径,所以这个情况的出现,就是本质上就是找不到文件

为什么pycharm能够正常运行呢?

因为pycharm在每次运行的时候,都会检索整个工程目录,把一些目录都添加到sys.path中,自然运行起来的时候,都能够找到对应的模块py文件。

为什么命令行找不到模块?

因为命令行执行时,往往都是直接运行某个py文件,缺少路径检索的步骤(需要我们加上)

前面也说了,模块找不到,实际上就是文件找不到。

这个时候,我们就需要自己在代码中加上需要引入的模块路径,就能够找到模块了。

import os
import sys

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)

from 模块路径.模块文件 import 类1, 类2, 类3

# xxxx你的代码

在需要执行的py文件中,加上这段代码。就是在import模块文件前,先将模块路径,添加到sys.path,就能够正常引入模块。

命令行运行文件一切正常!

可能还要小伙伴失败,这个原因就是出在模块路径上了。

__file__ 。是指当前文件。

os.path.abspath(__file__):这个是获取文件的基础路径。
os.path.dirname(dir):这个是获取文件的文件夹目录(相当于拿到了文件夹)。

基础路径一般不会出错,但是文件夹目录往往都会出错,需要目录正确。

每使用一次os.path.dirname(dir),就是向上走一层,就需要不断地嵌套os.path.dirname(dir),一层一层向上走,走到工程的根目录下,就可以了。

你可能感兴趣的:(Python,python,子模块)