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 相关文章推荐
本地文件上传到七牛云服务器示例(七牛云存储)
Jan 11 Python
几种实用的pythonic语法实例代码
Feb 24 Python
Python装饰器原理与用法分析
Apr 30 Python
Python字符串、整数、和浮点型数相互转换实例
Aug 04 Python
Windows下PyCharm安装图文教程
Aug 27 Python
python 随机打乱 图片和对应的标签方法
Dec 14 Python
python 设置输出图像的像素大小方法
Jul 04 Python
pycharm 批量修改变量名称的方法
Aug 01 Python
django中使用事务及接入支付宝支付功能
Sep 15 Python
Python制作简易版小工具之计算天数的实现思路
Feb 13 Python
Python迭代器协议及for循环工作机制详解
Jul 14 Python
Python3.7安装pyaudio教程解析
Jul 24 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网上调查系统
2006/10/09 PHP
php缓存技术介绍
2006/11/25 PHP
CakePHP去除默认显示的标题及图标的方法
2008/10/22 PHP
使用PHP 5.0创建图形的巧妙方法
2010/10/12 PHP
PHP关联链接常用代码
2012/11/05 PHP
学习ExtJS Panel常用方法
2009/10/07 Javascript
JavaScript中valueOf函数与toString方法深入理解
2012/12/02 Javascript
jQuery插件slick实现响应式移动端幻灯片图片切换特效
2015/04/12 Javascript
JavaScript中字面量与函数的基本使用知识
2015/10/20 Javascript
学习javascript面向对象 理解javascript原型和原型链
2016/01/04 Javascript
Jquery attr()方法 属性赋值和属性获取详解
2016/04/15 Javascript
如何在基于vue-cli的项目自定义打包环境
2018/11/10 Javascript
jQuery使用bind动态绑定事件无效的处理方法
2018/12/11 jQuery
vue点击按钮动态创建与删除组件功能
2019/12/29 Javascript
详解Vue Cli浏览器兼容性实践
2020/06/08 Javascript
NodeJS和浏览器中this关键字的不同之处
2021/03/03 NodeJs
[43:51]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS Secret
2018/03/31 DOTA
pycharm下打开、执行并调试scrapy爬虫程序的方法
2017/11/29 Python
Python中的二维数组实例(list与numpy.array)
2018/04/13 Python
详解Python 协程的详细用法使用和例子
2018/06/15 Python
python爬虫获取百度首页内容教学
2018/12/23 Python
Python定时任务随机时间执行的实现方法
2019/08/14 Python
对python while循环和双重循环的实例详解
2019/08/23 Python
python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)
2020/04/08 Python
python如何调用字典的key
2020/05/25 Python
PyTorch中model.zero_grad()和optimizer.zero_grad()用法
2020/06/24 Python
django教程如何自学
2020/07/31 Python
用Python制作音乐海报
2021/01/26 Python
基于HTML5实现类似微信手机摇一摇功能(计算摇动次数)
2017/07/24 HTML / CSS
澳大利亚在线划船、露营和钓鱼商店:BCF Australia
2020/03/22 全球购物
机工车间主任岗位职责
2014/03/05 职场文书
大学生活自我评价
2014/04/09 职场文书
竞聘上岗演讲
2014/05/19 职场文书
民事答辩状格式范文
2015/05/21 职场文书
2015年校医个人工作总结
2015/07/24 职场文书
pandas求平均数和中位数的方法实例
2021/08/04 Python