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实现删除文件与目录的方法
Nov 10 Python
在Python中处理日期和时间的基本知识点整理汇总
May 22 Python
深入理解python中的闭包和装饰器
Jun 12 Python
对python程序内存泄漏调试的记录
Jun 11 Python
Python/ArcPy遍历指定目录中的MDB文件方法
Oct 27 Python
python构建基础的爬虫教学
Dec 23 Python
详解Django中CBV(Class Base Views)模型源码分析
Feb 25 Python
django 信号调度机制详解
Jul 19 Python
python GUI库图形界面开发之pyinstaller打包python程序为exe安装文件
Feb 26 Python
解决python父线程关闭后子线程不关闭问题
Apr 25 Python
学会用Python实现滑雪小游戏,再也不用去北海道啦
May 20 Python
如何正确理解python装饰器
Jun 15 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
PHP在Web开发领域的优势
2006/10/09 PHP
php循环输出数据库内容的代码
2008/05/24 PHP
用 Composer构建自己的 PHP 框架之构建路由
2014/10/30 PHP
PHP实现的简单AES加密解密算法实例
2017/05/29 PHP
PHP API接口必备之输出json格式数据示例代码
2017/06/27 PHP
网页整体变灰白色(兼容各浏览器)实例
2013/04/21 Javascript
鼠标滚轴控制文本框值的JS代码
2013/11/19 Javascript
浅谈JSON和JSONP区别及jQuery的ajax jsonp的使用
2014/11/23 Javascript
13 款最热门的 jQuery 图像 360 度旋转插件推荐
2014/12/09 Javascript
如何使用jquery easyui创建标签组件
2015/11/18 Javascript
JS+CSS实现DIV层的展开、收缩效果
2016/01/28 Javascript
基于Node的React图片上传组件实现实例代码
2017/05/10 Javascript
JavaScript实现二叉树的先序、中序及后序遍历方法详解
2017/10/26 Javascript
laydate时间日历插件使用方法详解
2018/11/14 Javascript
Vue 实现点击空白处隐藏某节点的三种方式(指令、普通、遮罩)
2019/10/23 Javascript
对vuex中store和$store的区别说明
2020/07/24 Javascript
基于vuex实现购物车功能
2021/01/10 Vue.js
python3 模拟登录v2ex实例讲解
2017/07/13 Python
Python3中使用PyMongo的方法详解
2017/07/28 Python
Python 关于反射和类的特殊成员方法
2017/09/14 Python
python 自动重连wifi windows的方法
2018/12/18 Python
Python Django Vue 项目创建过程详解
2019/07/29 Python
python并发编程多进程之守护进程原理解析
2019/08/20 Python
python opencv如何实现图片绘制
2020/01/19 Python
对django 2.x版本中models.ForeignKey()外键说明介绍
2020/03/30 Python
Python使用Paramiko控制liunx第三方库
2020/05/20 Python
Python中的特殊方法以及应用详解
2020/09/20 Python
python 用struct模块解决黏包问题
2020/11/07 Python
Charles&Keith美国官方网站:新加坡快时尚鞋类和配饰零售商
2019/11/27 全球购物
大专学生推荐信范文
2013/11/19 职场文书
咖啡店自主创业商业计划书
2014/01/22 职场文书
大学生简历求职信
2014/06/24 职场文书
学雷锋标语
2014/06/25 职场文书
员工趣味活动方案
2014/08/27 职场文书
农贸批发市场管理制度
2015/08/07 职场文书
2019年特色火锅店的创业计划书模板
2019/08/28 职场文书