python没找到导入的包,有可能是没下载或者是导入的路径不对,我们这里主要谈论导入的路径问题
举个例子
文件内容如下:
# file_path.py的内容
WORDS = "hello,python"
# test.py的内容
from config.file_path import WORDS
print(WORDS)
很简单,就是test.py调用file_path.py里的WORDS变量.在pycharm中运行没问题.但是在CMD中执行就会报ModuleNotFoundError: No module named ‘config’ 的错误,如下所示:
(test) liaoguoxiong@lgxdeMacBook-Pro solve_import_question % python data/test.py
Traceback (most recent call last):
File "data/test.py", line 8, in <module>
from config.file_path import WORDS
ModuleNotFoundError: No module named 'config'
# 报错的意思就是没找到config目录,也就无法导入file_path
为什么pycharm中可以找到,cmd中就找不到呢? 是因为pycharm把项目路径加入了python搜索路径.而CMD中没有.
那办法就出来了,我们在test.py文件中把项目路径加入python搜索路径就可以找到config目录了.如下所示:
import os
import sys
# 找到当前文件的决定路径,__file__ 表示当前文件,也就是test.py
file_path = os.path.abspath(__file__)
print(file_path)
# 获取当前文件所在的目录
cur_path = os.path.dirname(file_path)
print(cur_path)
# 获取项目所在路径
project_path = os.path.dirname(cur_path)
print(project_path)
# 把项目路径加入python搜索路径
sys.path.append(project_path)
from config.file_path import WORDS
print(WORDS)
# 输出,已经可以调用了
/Users/liaoguoxiong/Desktop/python_project/solve_import_question/data/test.py
/Users/liaoguoxiong/Desktop/python_project/solve_import_question/data
/Users/liaoguoxiong/Desktop/python_project/solve_import_question
hello,python
注:如果要执行的文件所在的目录层数比较多的话,办法也是一样的,多分解几次路径就行了.