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实现国外赌场热门游戏Craps(双骰子)
Mar 31 Python
Python利用Beautiful Soup模块修改内容方法示例
Mar 27 Python
Python实现MySQL操作的方法小结【安装,连接,增删改查等】
Jul 12 Python
Pytorch入门之mnist分类实例
Apr 14 Python
解决python中使用plot画图,图不显示的问题
Jul 04 Python
python绘制多个子图的实例
Jul 07 Python
Python3enumrate和range对比及示例详解
Jul 13 Python
Python3加密解密库Crypto的RSA加解密和签名/验签实现方法实例
Feb 11 Python
python实现遍历文件夹图片并重命名
Mar 23 Python
Keras在训练期间可视化训练误差和测试误差实例
Jun 16 Python
Python如何定义接口和抽象类
Jul 28 Python
Python日志器使用方法及原理解析
Sep 27 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 win下Socket方式发邮件类
2009/08/21 PHP
PHP调用VC编写的COM组件实例
2014/03/29 PHP
php基于Snoopy解析网页html的方法
2015/07/09 PHP
php禁用cookie后session设置方法分析
2016/10/19 PHP
Bootstrap+PHP实现多图上传功能实例详解
2018/04/08 PHP
PHP面向对象程序设计内置标准类,普通数据类型转为对象类型示例
2019/06/12 PHP
php连接mysql数据库最简单的实现方法
2019/09/24 PHP
网页中CDATA标记的说明
2010/09/12 Javascript
jquery实现的让超出显示范围外的导航自动固定屏幕最顶上
2011/09/22 Javascript
如何使用json在前后台进行数据传输实例介绍
2013/04/11 Javascript
深入理解javascript中的立即执行函数(function(){…})()
2014/06/12 Javascript
javascript实现3D切换焦点图
2015/10/16 Javascript
JS组件中bootstrap multiselect两大组件较量
2016/01/26 Javascript
基于JavaScript如何制作遮罩层对话框
2016/01/26 Javascript
AngularJS入门教程之AngularJS模型
2016/04/18 Javascript
JS 数组随机洗牌的实例代码
2018/09/12 Javascript
js实现随机抽奖
2020/03/19 Javascript
js操作两个json数组合并、去重,以及删除某一项元素
2020/09/22 Javascript
python中getaddrinfo()基本用法实例分析
2015/06/28 Python
python中OrderedDict的使用方法详解
2017/05/05 Python
python嵌套字典比较值与取值的实现示例
2017/11/03 Python
100行python代码实现跳一跳辅助程序
2018/01/15 Python
Python Web程序部署到Ubuntu服务器上的方法
2018/02/22 Python
Python在groupby分组后提取指定位置记录方法
2018/04/20 Python
8种用Python实现线性回归的方法对比详解
2019/07/10 Python
python如何从键盘获取输入实例
2020/06/18 Python
HTML5 Canvas API中drawImage()方法的使用实例
2016/03/25 HTML / CSS
企业业务员岗位职责
2014/03/14 职场文书
安全生产计划书
2014/05/04 职场文书
个人委托书
2014/07/31 职场文书
四风问题个人对照检查剖析材料
2014/09/27 职场文书
个人原因辞职信模板
2015/05/13 职场文书
为什么MySQL选择Repeatable Read作为默认隔离级别
2021/07/26 MySQL
JavaScript 原型与原型链详情
2021/11/02 Javascript
springboot+rabbitmq实现智能家居实例详解
2022/07/23 Java/Android
使用JS前端技术实现静态图片局部流动效果
2022/08/05 Javascript