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实现多线程采集的2个代码例子
Jul 07 Python
Python中使用PDB库调试程序
Apr 05 Python
详细解析Python中的变量的数据类型
May 13 Python
在主机商的共享服务器上部署Django站点的方法
Jul 22 Python
python list是否包含另一个list所有元素的实例
May 04 Python
Python3的介绍、安装和命令行的认识(推荐)
Oct 20 Python
Python 类,property属性(简化属性的操作),@property,property()用法示例
Oct 12 Python
python Django框架实现web端分页呈现数据
Oct 31 Python
将数据集制作成VOC数据集格式的实例
Feb 17 Python
ubuntu16.04升级Python3.5到Python3.7的方法步骤
Aug 20 Python
python 实现端口扫描工具
Dec 18 Python
python 装饰器的基本使用
Jan 13 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
WHOIS类的修改版
2006/10/09 PHP
php curl常见错误:SSL错误、bool(false)
2011/12/28 PHP
PHP文件去掉PHP注释空格的函数分析(PHP代码压缩)
2013/07/02 PHP
开启PHP的伪静态模式
2015/12/31 PHP
PHP命名空间定义与用法实例分析
2019/08/14 PHP
PHP+MySql实现一个简单的留言板
2020/07/19 PHP
使用jquery实现select添加实现后台权限添加的效果
2011/05/28 Javascript
深入理解JavaScript系列(13) This? Yes,this!
2012/01/18 Javascript
javascript返回顶部效果(自写代码)
2013/01/06 Javascript
window.location.href IE下跳转失效的解决方法
2014/03/27 Javascript
jquery实现简单的轮换出现效果实例
2015/07/23 Javascript
Jquery代码实现图片轮播效果(一)
2015/08/12 Javascript
JS 实现倒计时数字时钟效果【附实例代码】
2016/03/30 Javascript
Reactjs实现通用分页组件的实例代码
2017/01/19 Javascript
AngularJS通过ng-Img-Crop实现头像截取的示例
2017/08/17 Javascript
Angular4 ElementRef的应用
2018/02/26 Javascript
详解Immutable及 React 中实践
2018/03/01 Javascript
详解从买域名到使用pm2部署node.js项目全过程
2018/03/07 Javascript
JavaScript实现浅拷贝与深拷贝的方法分析
2018/07/05 Javascript
解决vue移动端适配问题
2018/12/12 Javascript
微信小程序音乐播放器开发
2019/11/20 Javascript
举例区分Python中的浅复制与深复制
2015/07/02 Python
python+pyqt实现12306图片验证效果
2017/10/25 Python
Python字符串拼接六种方法介绍
2017/12/18 Python
Python PyQt4实现QQ抽屉效果
2018/04/20 Python
Python实现简单石头剪刀布游戏
2021/01/20 Python
Python序列化与反序列化pickle用法实例
2019/11/11 Python
Python中SQLite如何使用
2020/05/27 Python
Ubuntu权限不足无法创建文件夹解决方案
2020/11/14 Python
python 可视化库PyG2Plot的使用
2021/01/21 Python
跟单文员的岗位职责
2013/11/14 职场文书
高中学生期末评语
2014/04/25 职场文书
高校师德师风自我剖析材料
2014/09/29 职场文书
酒店辞职书范文
2015/02/26 职场文书
交通事故被告代理词
2015/05/23 职场文书
2015党建工作简报
2015/07/21 职场文书