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 相关文章推荐
Django1.7+python 2.78+pycharm配置mysql数据库教程
Nov 18 Python
centos 下面安装python2.7 +pip +mysqld
Nov 18 Python
Python一行代码实现快速排序的方法
Apr 30 Python
在Pandas中处理NaN值的方法
Jun 25 Python
pytorch多GPU并行运算的实现
Sep 27 Python
pytorch模型预测结果与ndarray互转方式
Jan 15 Python
如何使用python切换hosts文件
Apr 29 Python
Python基于numpy模块实现回归预测
May 14 Python
如何基于Python代码实现高精度免费OCR工具
Jun 18 Python
Python APScheduler执行使用方法详解
Dec 10 Python
详解Java中一维、二维数组在内存中的结构
Feb 11 Python
Pytorch反向传播中的细节-计算梯度时的默认累加操作
Jun 05 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
谏山创故乡大分县日田市水坝将设立《进击的巨人》立艾伦、三笠以及阿尔敏的铜像!
2020/03/06 日漫
PHP PDO操作MySQL基础教程
2017/06/05 PHP
php实现和c#一致的DES加密解密实例
2017/07/24 PHP
PHP5.0~5.6 各版本兼容性cURL文件上传功能实例分析
2018/05/11 PHP
jquery 打开窗口返回值实现代码
2010/03/04 Javascript
a标签的href和onclick 的事件的区别介绍
2013/07/26 Javascript
JQuery Highcharts 动态生成图表的方法
2013/11/15 Javascript
Node.js开发之访问Redis数据库教程
2015/01/14 Javascript
浅谈javascript构造函数与实例化对象
2015/06/22 Javascript
学习JavaScript设计模式(单例模式)
2015/11/26 Javascript
jQuery Validate让普通按钮触发表单验证的方法
2016/12/15 Javascript
微信小程序中使用javascript 回调函数
2017/05/11 Javascript
JS实现HTML页面中动态显示当前时间完整示例
2018/07/30 Javascript
nodejs实现百度舆情接口应用示例
2020/02/07 NodeJs
VUE页面中通过双击实现复制表格中内容的示例代码
2020/06/11 Javascript
JavaScript实现网页跨年倒计时
2020/12/02 Javascript
绘制微信小程序验证码功能的实例代码
2021/01/05 Javascript
详解Python函数作用域的LEGB顺序
2016/05/14 Python
python绘制简单折线图代码示例
2017/12/19 Python
Python基于jieba库进行简单分词及词云功能实现方法
2018/06/16 Python
python爬虫之线程池和进程池功能与用法详解
2018/08/02 Python
基于django传递数据到后端的例子
2019/08/16 Python
详解KMP算法以及python如何实现
2020/09/18 Python
Python实现壁纸下载与轮换
2020/10/19 Python
基于Python的图像阈值化分割(迭代法)
2020/11/20 Python
使用Python快速打开一个百万行级别的超大Excel文件的方法
2021/03/02 Python
Html5 Canvas 实现一个“刮刮乐”游戏
2019/09/05 HTML / CSS
canvas进阶之如何画出平滑的曲线
2018/10/15 HTML / CSS
跟单业务员岗位职责
2014/03/08 职场文书
小区门卫岗位职责范本
2014/08/24 职场文书
2015年信贷员工作总结
2015/04/28 职场文书
工厂员工辞职信范文
2015/05/12 职场文书
2015年国培研修感言
2015/08/01 职场文书
护士医德医风心得体会
2016/01/25 职场文书
Python pandas求方差和标准差的方法实例
2021/08/04 Python
springboot读取resources下文件的方式详解
2022/06/21 Java/Android