python 服务器运行代码报错ModuleNotFoundError的解决办法


Posted in Python onSeptember 16, 2020

一、问题描述

一段 Python 代码在本地的 IDE 上运行正常,部署到服务器运行后,出现了 ModuleNotFoundError: No module named ‘xxx' 错误。

二、问题原因

在代码中引入了其他文件的包(自己写的包,非 pip 安装的),问题出在 import 那行语句。

错误的原因是因为路径的原因,服务器端的路径和我们本地的路径不一样显示。

三、解决示例

要解决这个问题,可以在自己代码的顶端加入以下代码:

import sys
import os
sys.path.append(os.path.dirname(sys.path[0]))

或者

import sys
import os

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, BASE_DIR)

以上代码可以保证在任何时候都切换到当前执行脚本所在目录中,具体根据自己脚本所在的目录结构进行调整。

四、sys.path.append() 和 sys.path.insert()

Python 程序中使用 import xxx 时,Python 解析器会在当前目录、已安装和第三方模块中搜索 xxx,如果都搜索不到就会报错。

sys.path 模块可以动态的修改系统路径,这种方法导入的路径会在 Python 程序退出后失效。

sys.path 本身是个列表,所以在里面添加目录是很容易的,添加完后,新目录即时起效,以后的每次 import 操作都可能会检查这个目录。

1. sys.path.append()

sys.path 列表的末尾临时添加搜索路径,方便更简洁的 import 其他包和模块。这种方法导入的路径会在 Python 程序退出后失效。

示例:

import sys
sys.path.append('..') # 表示导入当前文件的上层目录到搜索路径中
sys.path.append('/home/model') # 绝对路径

from folderA.folderB.fileA import functionA

2. sys.path.insert()

可以定义搜索优先顺序,序号从 0 开始,表示最大优先级,sys.path.insert() 加入的也是临时搜索路径,程序退出后失效。

示例:

import sys
sys.path.insert(1, "./model")

以上就是python 服务器运行代码报错ModuleNotFoundError的解决办法的详细内容,更多关于python 代码报错的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python 和 JS 有哪些相同之处
Nov 23 Python
通过Python 获取Android设备信息的轻量级框架
Dec 18 Python
pandas or sql计算前后两行数据间的增值方法
Apr 20 Python
python3 爬取图片的实例代码
Nov 06 Python
Python3.4学习笔记之 idle 清屏扩展插件用法分析
Mar 01 Python
10招!看骨灰级Pythoner玩转Python的方法
Apr 15 Python
介绍一款python类型检查工具pyright(推荐)
Jul 03 Python
Python运行DLL文件的方法
Jan 17 Python
Python post请求实现代码实例
Feb 28 Python
python输出国际象棋棋盘的实例分享
Nov 26 Python
python 基于opencv 实现一个鼠标绘图小程序
Dec 11 Python
一行代码python实现文件共享服务器
Apr 22 Python
pycharm2020.2 配置使用的方法详解
Sep 16 #Python
python Matplotlib模块的使用
Sep 16 #Python
Python类成员继承重写的实现
Sep 16 #Python
PyCharm设置注释字体颜色以及是否倾斜的操作
Sep 16 #Python
Python面向对象多态实现原理及代码实例
Sep 16 #Python
Python使用pycharm导入pymysql教程
Sep 16 #Python
pycharm中如何自定义设置通过“ctrl+滚轮”进行放大和缩小实现方法
Sep 16 #Python
You might like
4.与数据库的连接
2006/10/09 PHP
PHP学习笔记之三 数据库基本操作
2011/01/17 PHP
探讨fckeditor在Php中的配置详解
2013/06/08 PHP
PHP+MYSQL实现读写分离简单实战
2017/03/13 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
php封装的pdo数据库操作工具类与用法示例
2019/05/08 PHP
PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析
2020/01/02 PHP
Javascript操纵Cookie实现购物车程序
2007/02/15 Javascript
JavaScript 高级篇之函数 (四)
2012/04/07 Javascript
深入理解javascript动态插入技术
2013/11/12 Javascript
javascript去除字符串中所有标点符号和提取纯文本的正则
2014/06/07 Javascript
Javascript中的几种URL编码方法比较
2015/01/23 Javascript
JavaScript编程中的Promise使用大全
2015/07/28 Javascript
如何使用jquery easyui创建标签组件
2015/11/18 Javascript
两种简单的跨域方法(jsonp、php)
2017/01/02 Javascript
JavaScript实现时钟滴答声效果
2017/01/29 Javascript
js常用的继承--组合式继承
2017/03/06 Javascript
发布Angular应用至生产环境的方法
2018/12/10 Javascript
vue 中Virtual Dom被创建的方法
2019/04/15 Javascript
Vue自定义表单内容检查rules实例
2020/10/30 Javascript
python 实现对文件夹中的图像连续重命名方法
2018/10/25 Python
对python数据切割归并算法的实例讲解
2018/12/12 Python
python 调试冷知识(小结)
2019/11/11 Python
Windows下Anaconda安装、换源与更新的方法
2020/04/17 Python
Canvas globalCompositeOperation
2018/12/18 HTML / CSS
Sunglasses Shop瑞典:欧洲领先的太阳镜网上商店
2018/04/22 全球购物
如何打造一封优秀的留学推荐信
2014/01/25 职场文书
转预备党员政审材料
2014/02/06 职场文书
大型会议接待方案
2014/03/01 职场文书
材料会计岗位职责
2014/03/06 职场文书
优秀教导主任事迹材料
2014/05/09 职场文书
祖国在我心中演讲稿(小学生)
2014/09/23 职场文书
2015年人力资源工作总结
2015/04/08 职场文书
给老婆的保证书怎么写
2015/05/08 职场文书
2016年度继续教育学习心得体会
2016/01/19 职场文书
2016年度师德标兵先进事迹材料
2016/02/26 职场文书