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操作摄像头截图实现远程监控的例子
Mar 25 Python
Tornado协程在python2.7如何返回值(实现方法)
Jun 22 Python
python+opencv识别图片中的圆形
Mar 25 Python
python 删除指定时间间隔之前的文件实例
Apr 24 Python
python3+PyQt5实现自定义分数滑块部件
Apr 24 Python
Python安装pycurl失败的解决方法
Oct 15 Python
python 进程的几种创建方式详解
Aug 29 Python
Python全局锁中如何合理运用多线程(多进程)
Nov 06 Python
Python各种扩展名区别点整理
Feb 27 Python
python GUI库图形界面开发之PyQt5下拉列表框控件QComboBox详细使用方法与实例
Feb 27 Python
windows10环境下用anaconda和VScode配置的图文教程
Mar 30 Python
Python 高效编程技巧分享
Sep 10 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目录遍历函数opendir用法实例
2014/11/20 PHP
php超快高效率统计大文件行数
2015/07/05 PHP
简单解析PHP程序的运行流程
2016/06/23 PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
2016/09/11 PHP
php获取'/'传参的值简单方法
2017/07/13 PHP
js 页面关闭前的出现提示的实现代码
2011/05/25 Javascript
jquery让返回的内容显示在特定div里(代码少而精悍)
2014/06/23 Javascript
Javascript函数式编程简单介绍
2015/10/11 Javascript
SublimeText自带格式化代码功能之reindent
2015/12/27 Javascript
jQuery取消特定的click事件
2016/02/29 Javascript
Node.js+Express配置入门教程
2016/05/19 Javascript
jQuery获取Table某列的值(推荐)
2017/03/03 Javascript
3种vue组件的书写形式
2017/11/29 Javascript
对Angular中单向数据流的深入理解
2018/03/31 Javascript
jQuery实现form表单序列化转换为json对象功能示例
2018/05/23 jQuery
Vue-Router的使用方法
2018/09/05 Javascript
vuejs+element UI点击编辑表格某一行时获取内容填入表单的示例
2018/10/31 Javascript
基于JS实现数字动态变化显示效果附源码
2019/07/18 Javascript
Vue简单实现原理详解
2020/05/07 Javascript
vuecli项目构建SSR服务端渲染的实现
2020/10/30 Javascript
element-ui中el-upload多文件一次性上传的实现
2020/12/02 Javascript
[01:11:35]Liquid vs LGD 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python中的自省(反射)详解
2015/06/02 Python
Python 由字符串函数名得到对应的函数(实例讲解)
2017/08/10 Python
在python中获取div的文本内容并和想定结果进行对比详解
2019/01/02 Python
Django结合ajax进行页面实时更新的例子
2019/08/12 Python
django的403/404/500错误自定义页面的配置方式
2020/05/21 Python
CSS Grid布局教程之网格单元格布局
2014/12/30 HTML / CSS
移动端开发HTML5页面点击按钮后出现闪烁或黑色背景的解决办法
2018/09/19 HTML / CSS
Luxplus荷兰:以会员价购买美容产品等,独家优惠
2019/08/30 全球购物
公积金转移接收函
2014/01/11 职场文书
2015年班主任德育工作总结
2015/05/21 职场文书
好员工观后感
2015/06/17 职场文书
教你用eclipse连接mysql数据库
2021/04/22 MySQL
python opencv检测直线 cv2.HoughLinesP的实现
2021/06/18 Python
Centos7中MySQL数据库使用mysqldump进行每日自动备份的编写
2021/08/02 MySQL