python 服务器运行代码报错ModuleNotFoundError的解决办法
作者:文渊 发布时间:2021-03-23 00:39:08
一、问题描述
一段 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")
来源:https://www.wenyuanblog.com/blogs/python-module-not-found-error-in-server.html
猜你喜欢
- Django 作为后端Web开发框架,有时候我们需要用到定时任务来或者固定频次的任务来执行某段代码,这时我们就要用到Celery了。Djan
- 在上次的爬虫中,抓取的数据主要用到的是第三方的Beautifulsoup库,然后对每一个具体的数据在网页中的selecter来找到它,每一个
- 源代码、参数及其意义:def sub(pattern, repl, string, count=0, flags=0): &n
- 介绍:今天在使用django的时候忽然想用到,如何匹配多个关键字的操作,我们知道django有一个objects.filter()方法,我们
- 在编写自动化测试用例的时候,每次登录都需要输入验证码,后来想把让python自己识别图片里的验证码,不需要自己手动登陆,所以查了一下识别功能
- 本文实例分析了javascript定义变量时带var与不带var的区别。分享给大家供大家参考。具体分析如下:直接看实例里说明:<scr
- 代码如下:USE TestDB declare @conversation uniqueidentifier while exists (s
- 原型扩展:>> String.prototype :String对象原型扩展 --------------
- 一、环境设置第一步引入必须的各类包import osimport tkinterimport tkinter.filedialogimpor
- 在Linux系统下Python连接Redis的基本配置方法具体操作步骤系统环境:OS:Oracle Linux Enterprise 5.6
- 1.前言在移动商业广告的测试的工作中,经常会需要对广告请求进行捕获和分析,常使用的有两个测试工具:fiddler,Charles,这两个工具
- 一、使用ImageFolder读取数据集时忽略特定文件如果事先知道需要忽略哪些文件,当然直接从数据集里删除就行了。但如果需要在程序运行时动态
- pcntl扩展可以支持php的多线程操作(仅限linux)原本需要重新编译PHP的后面configrue提示加上--enable-pcntl
- 从最简单的Web浏览器的登录界面开始,登录界面如下:进行Web页面自动化测试,对页面上的元素进行定位和操作是核心。而操作又是以定位为前提的,
- 在做我的友情链接批量检查工具过程中,碰到一些情况,就是对方网页会用gzip压缩。用gzip压缩的好处是,能压缩网页大小,加快网页的浏览速度,
- 对于许多想学习JavaScript的朋友来说,无疑如何选择入门的书籍是他们最头疼的问题,或许也是他们一直畏惧,甚至放弃学习JavaScrip
- 目录TCP简介TCP介绍TCP特点TCP与UDP的不同点udp通信模型tcp客户端tcp服务器tcp注意点TCP简介TCP介绍TCP协议,传
- 本篇介绍Python字典的常见操作。修改字典元素,如图。添加字典元素,如图。删除字典元素del方法,如图。删除字典元素clear方法,如图。
- 前言:泛型是静态类型语言的基本特征,允许将类型作为参数传递给另一个类型、函数、或者其他结构。TypeScript 支持泛型作为将类型安全引入
- 下载下面提供两种下载地址,官网地址一般为最新的,网盘地址会定期更新,但是不保证一定是最新的官网下载地址:https://www.jetbra