python终端命令执行提示找不到自定义模块问题及解决
作者:回忆式~过去.
在使用Python开发时,直接通过终端执行脚本可能会遇到模块导入错误,因为终端不会自动添加工程目录到sys.path中,解决方法是使用os库获取当前文件的根目录,并用sys.path.append()添加到路径中,或者直接添加目标文件的绝对路径
描述一下遇到的问题
平常在用pyhton做开发写代码的时候,我们大多数都是直接是编辑器中操作的(pycharm、eclipse、sublime等),其中免不了各个模块之间的一些导入方法调用,以下是我的目录结构:


在编辑器中我们导入后引用是没问题的可以正常运行,但是当我们直接在终端执行py脚本的时候就会报出
“from readexcel import ReadExcelE ModuleNotFoundError: No module named ‘readexcel’”
之类找不到模块的错误。

这个导入的是我们的本地的文件,报的错其实就是终端找不到我们本地的导入的这个文件。
因为编辑器运行的时候,都会检索我们的整个工程目录,把一些目录都添加到sys.path中,自然运行起来的时候,都能够找到对应的模块py文件。
而我们在终端执行某个文件的时候都是直接运行指定文件的,缺少需要检索的路径,所以终端无法找到我们要导入的文件。
第一种方法
通过 os库方法获取我们当前文件的根目录,然后用 sys.path.append()进行添加
#调用os,sys模块 import os import sys BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath或者os.path.dirname(__file__))) sys.path.append(BASE_DIR) from 模块路径.模块文件 import 类1, 类2, 类3 # xxxx你的代码
第二种方法
直接使用 sys.path.append() 方法添加绝对路径
#在要执行的文件中添加此路径
sys.path.append("/xxxxxx/pyhton_pytest_Demo/Demo_API_1/lib/")
注意:这两种方法要添加在导库之前,不然依然会无效找不到
网上很多查到的此类的添加的是当前文件的路径,而我们要添加的是所要导入文件的路径,并没有很清晰的阐述,所以一定要注意
经实测,添加后均可执行成功
小伙伴们在遇到此类问题的时候可以试试,需要多关注一下添加的是文件目录还是直接精确到文件名
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
