python终端命令执行提示找不到自定义模块
@
目录
描述一下遇到的问题:
平常在用pyhton做开发写代码的时候,我们大多数都是直接是编辑器中操作的(pycharm、eclipse、sublime等),其中免不了各个模块之间的一些导入方法调用,以下是我的目录结构:
在编辑器中我们导入后引用是没问题的可以正常运行,但是当我们直接在终端执行py脚本的时候就会报出 “from readexcel import ReadExcelE ModuleNotFoundError: No module named 'readexcel'”之类找不到模块的错误。
这个导入的是我们的本地的文件,报的错其实就是终端找不到我们本地的导入的这个文件。
因为编辑器运行的时候,都会检索我们的整个工程目录,把一些目录都添加到sys.path中,自然运行起来的时候,都能够找到对应的模块py文件。
而我们在终端执行某个文件的时候都是直接运行指定文件的,缺少需要检索的路径,所以终端无法找到我们要导入的文件。
在网上查的一些资料说的都很概括,按照网上的一些教程在win环境配置没问题的,但是某些方法在Mac环境中同样的方法就不适用了。
#调用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你的代码
比如上边这个查到的方法,在win环境中是可用的,也可以直接使用sys.path.append(文件路径/文件名)进行添加,但是同样的方法在Mac上边怎么都不行。
网上很多查到的此类的添加的是当前文件的路径,而我们要添加的是所要导入文件的路径,并没有很清晰的阐述,所以一定要注意
我试了几次以后发现Mac上添加文件的绝对路径上级的目录名后执行成功
#在要执行的文件中添加此路径
sys.path.append("/xxxxxx/pyhton_pytest_Demo/Demo_API_1/lib/")
小伙伴们在遇到此类问题的时候可以试试,需要多关注一下添加的是文件目录还是直接精确到文件名