在 pycharm 上运行的好好的,但是到服务器就出现了问题
首先,在服务器上确认一下你当前的需要导入的数据和导入的第三方包是否在服务器当前的路径下
如果不在,那么就会报错。
ModuleNotFoundError: No module named 'scr'
from B import C # 绝对导入 from . import D # 相对导入 from ..E import F # 相对导入
Python 解释器对于绝对导入的处理是从当前目录、sys.path、环境变量 PYTHONPATH 中搜索需要导入的包。如果使用绝对导入出现问题需要考虑是否可以从这些目录中找到相应的包
solution:
import sys sys.path.append('你的项目目录') from B import C
import sys import os sys.path.append(os.path.dirname(os.path.realpath(__file__))) # os.path.realpath(__file__)表示当前文件的路径,加上os.path.dirname就是当前文件的上一级目录路径 # 套多少个dirname()取决于当前文件在你的项目目录中的深度有多少。 # 注意不要把realpath写成relpath! from B import A
按照 PEP8 的标准,建议使用绝对导入,例如from A.B import C
(从*包开始,A 就是这里的*包,也就是最外层的含有 __init__.py
的目录)。但是相对导入也是被允许的,出于以下考虑:
- 项目目录较深时,绝对导入会产生冗长的导入语句;
- 对顶层包名修改时,就要在每个绝对导入语句中相应修改包名,这是件令人头疼的事。
ImportError: No module named *** 问题?——理解绝对导入和相对导入 | Levy's Blog
服务器运行代码出现 ModuleNotFoundError:No module named 'xxx' - 文渊博客