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 算法 排序实现快速排序
Jun 05 Python
Python遍历文件夹和读写文件的实现方法
May 10 Python
python爬虫_微信公众号推送信息爬取的实例
Oct 23 Python
python实现拓扑排序的基本教程
Mar 11 Python
解决pycharm remote deployment 配置的问题
Jun 27 Python
python re.sub()替换正则的匹配内容方法
Jul 22 Python
在Python中使用turtle绘制多个同心圆示例
Nov 23 Python
解决pycharm中导入自己写的.py函数出错问题
Feb 12 Python
Python+Opencv身份证号码区域提取及识别实现
Aug 25 Python
python中numpy.empty()函数实例讲解
Feb 05 Python
Pytest实现setup和teardown的详细使用详解
Apr 17 Python
Python保存并浏览用户的历史记录
Apr 29 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 文件上传实例代码
2012/04/19 PHP
使用session判断用户登录用户权限(超简单)
2013/06/08 PHP
Yii使用Captcha验证码的方法
2015/12/28 PHP
php+laravel依赖注入知识点总结
2019/11/04 PHP
JavaScript加密解密7种方法总结分析
2007/10/07 Javascript
js获取图片长和宽度的代码
2009/11/24 Javascript
js 实现打印网页中定义的部分内容的代码
2010/04/01 Javascript
JQuery中判断一个元素下面是否有内容或者有某个标签的判断代码
2012/02/02 Javascript
javascript 基础篇2 数据类型,语句,函数
2012/03/14 Javascript
JavaScript判断DOM何时加载完毕的技巧
2012/11/11 Javascript
JS中 用户登录系统的解决办法
2013/04/15 Javascript
简单几行JS Code实现IE邮件转发新浪微博
2013/07/03 Javascript
JavaScript动态改变HTML页面元素例如添加或删除
2014/08/10 Javascript
使用cluster 将自己的Node服务器扩展为多线程服务器
2014/11/10 Javascript
JS实现的3D拖拽翻页效果代码
2015/10/31 Javascript
使用jQuery获取data-的自定义属性
2015/11/10 Javascript
用JavaScript动态建立或增加CSS样式表的实现方法
2016/05/20 Javascript
关于JavaScript限制字数的输入框的那些事
2016/08/14 Javascript
浅析JavaScript动画模拟拖拽原理
2016/12/09 Javascript
Jquery根据浏览器窗口改变调整大小的方法
2017/02/07 Javascript
ES6新特性五:Set与Map的数据结构实例分析
2017/04/21 Javascript
AngularJS select加载数据选中默认值的方法
2018/02/28 Javascript
解决vue 按钮多次点击重复提交数据问题
2018/05/10 Javascript
dts文件中删除一个node或属性的操作方法
2018/08/05 Javascript
vue如何解决循环引用组件报错的问题
2018/09/22 Javascript
JS中的算法与数据结构之集合(Set)实例详解
2019/08/20 Javascript
Elasticsearch实现复合查询高亮结果功能
2019/09/10 Javascript
vue实现禁止浏览器记住密码功能的示例代码
2021/02/03 Vue.js
对numpy的array和python中自带的list之间相互转化详解
2018/04/13 Python
Python 画出来六维图
2019/07/26 Python
如何分离django中的媒体、静态文件和网页
2019/11/12 Python
浅谈python print(xx, flush = True) 全网最清晰的解释
2020/02/21 Python
优秀毕业生推荐信范文
2014/03/07 职场文书
中华美德颂演讲稿
2014/05/20 职场文书
论群众路线学习心得体会
2014/10/31 职场文书
MySQL之PXC集群搭建的方法步骤
2021/05/25 MySQL