python 服务器运行代码报错ModuleNotFoundError的解决办法
一、问题描述
一段 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中报错"json.decoder.JSONDecodeError: Expecting value:"的解决
在学习python语言中用json库解析网络数据时,我遇到了两个编译错误:json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes:和json.decoder.JSONDecodeError: Expecting value:.费了一些时间才找到原因,在此记录总结,希望能对学习python的同学有所帮助. 我运行的程序初始如下: import json data=''' { 'name' : '
-
解决python报错MemoryError的问题
如下: python 32bit 最大只能使用 2G 内存,坑爹之处,超过 2G 报错MemoryError. 而 64bit python则无此限制,所以建议使用 64bit python. 可能存在的问题:以前 numpy.scipy 官方的库只支持 32bit python,现在应该发布了 64bit 对应版本. 以上这篇解决python报错MemoryError的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.
-
解决安装python3.7.4报错Can''t connect to HTTPS URL because the SSL module is not available
简述 从官网下载了Python3.7.4,直接编译安装后,使用pip3出现了报错信息: Can't connect to HTTPS URL because the SSL module is not available 错误原因 在Python3.7之后的版本,依赖的openssl,必须要是1.1或者1.0.2之后的版本,或者安装了2.6.4之后的libressl. image.png 而本地的openssl依然是1.0.1e的. [root@localhost ~]# openssl ver
-
完美解决python遍历删除字典里值为空的元素报错问题
exam = { 'math': '95', 'eng': '96', 'chn': '90', 'phy': '', 'chem': '' } 使用下列遍历的方法删除: 1. for e in exam: 2. if exam[e] == '': 3. del exam[e] 结果出现下列错误,怎么解决: Traceback (most recent call last): File "Untitled.py", line 3, in <module> for e in
-
下载python中Crypto库报错:ModuleNotFoundError: No module named ‘Crypto’的解决
前言 最近在网上找了很多下载Crypto的方法,感觉作用都不算很大,然后自己瞎搞瞎搞就搞好了
-
Python使用pickle模块存储数据报错解决示例代码
本文研究的主要是Python使用pickle模块存储数据报错解决方法,以代码的形式展示,具体如下. 首先来了解下pickle模块 pickle提供了一个简单的持久化功能.可以将对象以文件的形式存放在磁盘上. pickle模块只能在python中使用,python中几乎所有的数据类型(列表,字典,集合,类等)都可以用pickle来序列化, pickle序列化后的数据,可读性差,人一般无法识别. 接下来我们看下Python使用pickle模块存储数据报错解决方法. 代码: # 写入错误 TypeEr
-
Python运行报错UnicodeDecodeError的解决方法
Python2.7在Windows上有一个bug,运行报错: UnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 33: ordinal not in range(128) 解决方案如下: 编辑Python27\Lib\mimetypes.py文件,全选,替换为以下patch后的正确脚本,或者直接依据此patch修改: """Guess the MIME type of a file. Th
-
Python使用pip安装报错:is not a supported wheel on this platform的解决方法
本文讲述了Python使用pip安装报错:is not a supported wheel on this platform的解决方法.分享给大家供大家参考,具体如下: 可能的原因1:安装的不是对应python版本的库,下载的库名中cp27代表python2.7,其它同理. 可能的原因2:这个是我遇到的情况(下载的是对应版本的库,然后仍然提示不支持当前平台) 在https://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy中,我下载到的numpy库文件名: n
-
Python连接Oracle之环境配置、实例代码及报错解决方法详解
Oracle Client 安装 1.环境 日期:2019年8月1日 公司已经安装好Oracle服务端 Windows版本:Windows10专业版 系统类型:64位操作系统,基于x64的处理器 Python版本:Python 3.6.4 :: Anaconda, Inc. 2.下载网址 https://www.oracle.com/database/technologies/instant-client/downloads.html 3.解压至目录 解压后(这里放D盘) 4.配置环境变量 控制
-
python 服务器运行代码报错ModuleNotFoundError的解决办法
一.问题描述 一段 Python 代码在本地的 IDE 上运行正常,部署到服务器运行后,出现了 ModuleNotFoundError: No module named 'xxx' 错误. 二.问题原因 在代码中引入了其他文件的包(自己写的包,非 pip 安装的),问题出在 import 那行语句. 错误的原因是因为路径的原因,服务器端的路径和我们本地的路径不一样显示. 三.解决示例 要解决这个问题,可以在自己代码的顶端加入以下代码: import sys import os sys.path.
-
Python报错:ModuleNotFoundError的解决办法
目录 前言: 正文: 1.pip install requests: 2.PyCharm里面安装软件包: 最后: 前言: 大家都知道python项目中需要导入各种包(这里的包引鉴于java中的),官话来讲就是Module. 而什么又是Module呢,通俗来讲就是一个模块,当然模块这个意思百度搜索一下都能出来,Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句.而Mudule的优点,像可维护性.复用.效率等的就不用再赘
-
python安装dlib库报错问题及解决方法
问题描述 我是debain 系的linux系统没遇到这个问题,在centos系统遇到的 Collecting dlib Downloading http://mirrors.cloud.aliyuncs.com/pypi/packages/63/92/05c3b98636661cb80d190a5a777dd94effcc14c0f6893222e5ca81e74fbc/dlib-19.19.0.tar.gz (3.2MB) 100% |███████████████████████
-
MySQL5.7 group by新特性报错1055的解决办法
项目中本来使用的是mysql5.6进行开发,切换到5.7之后,突然发现原来的一些sql运行都报错,错误编码1055,错误信息和sql_mode中的"only_full_group_by"有关,到网上看了原因,说是mysql5.7中only_full_group_by这个模式是默认开启的 解决办法大致有两种: 一:在sql查询语句中不需要group by的字段上使用any_value()函数 当然,这种对于已经开发了不少功能的项目不太合适,毕竟要把原来的sql都给修改一遍 二:修改my.
-
Oracle+Mybatis的foreach insert批量插入报错的快速解决办法
最近做一个批量导入的需求,将多条记录批量插入数据库中. 解决思路:在程序中封装一个List集合对象,然后把该集合中的实体插入到数据库中,因为项目使用了MyBatis,所以打算使用MyBatis的foreach功能进行批量插入.期间遇到了"SQL 命令未正确结束 "的错误,最终解决,记录下来供以后查阅和学习. 首先,在网上参考了有关Mybatis的foreach insert的资料,具体如下: foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合. foreach
-
nginx上传文件大小报错500的解决办法
nginx上传文件大小报错500的解决办法 采用nginx作反向代理,出现了一个诡异的问题,小文件可以提交,大文件会报500内部错误.这个是什么原因导致的呢? 查wiki可知,上传文件大小相关的有三个配置 client_body_buffer_size 配置请求体缓存区大小, 不配的话, client_body_temp_path 设置临时文件存放路径.只有当上传的请求体超出缓存区大小时,才会写到临时文件中 client_max_body_size 设置上传文件的最大值 所以查出来,问题出现的原
-
spring boot项目导入依赖后代码报错问题的解决方法
代码截图如图所示(由于本人问题已经解决,没来得及截图,所以在网上找了一张图片) 针对图中所示的情况,可参考一下解决方案: 方案一: 在 Idea 导入 Spring Boot 项目代码报红,试过更改maven配置,maven clean操作,执行-U idea:idea等命令还是提示:cannot resolve symbol 'SpringBootApplication' .我最终解决方法是导入要导入项目的pom.xml文件,而不是导入现有项目解决.选择pom.xml后会弹出提示框,选择a
-
vue安装node-sass和sass-loader报错问题的解决办法
目录 可行版本(针对 node 16+ 版本) 问题描述 解决方法 补充知识:解决启动VUE项目时报node-sass不能运行问题 总结 可行版本(针对 node 16+ 版本) 不想浪费时间看的,可直接去尝试 npm install node-sass@6.0.1 -D npm install sass-loader@10.2.0 -D 问题描述 问题描述:在进行一个vue项目练习时需要导入node-sass.sass-loader这两个依赖,书本提供代码是npm install sass-l
-
Mysql联合查询UNION和Order by同时使用报错问题的解决办法
因此,常常出现这样的错误 复制代码 代码如下: select * from [IND] where INDID>10unionselect * from [IND] where INDID<9 目前为止,还没有出现问 之后,也许有人会用到类似的查询 复制代码 代码如下: select * from [IND] where INDID>10 order by INDID descunionselect * from [IND] where INDID<9 order by INDID
-
IIS7使用.NET Framework v4.0运行库报500错误的解决办法
故障说明:1)Windows Server 2008 R2环境下安装的IIS7.52)安装.Net4.53)运行网站,报500错误:检查了webconfig等代码,没有问题 解决办法:重新注册.Net4.5,过程如下:一.开始,查找框中输入cmd字眼,然后出现cmd.exe应用程序二.cmd.exe上右键,选择用管理员身份来运行. 三.往命令行窗口中粘贴以下命令,回车,完成注册. 复制代码 代码如下: "%WINDIR%\Microsoft.NET\Framework\v4.0.30319\as
随机推荐
- Mootools 1.2教程 Fx.Tween的使用
- 用vbscript脚本实现返回 IP 配置数据的代码
- 详解vue项目首页加载速度优化
- 详解CentOS的SVN服务器搭建与自动部署全过程
- Python 使用SMTP发送邮件的代码小结
- java File类的基本使用方法总结
- 建立自己的RSS
- dropload.js插件下拉刷新和上拉加载使用详解
- Bootstrap CSS组件之按钮下拉菜单
- C语言二维数组中的查找的实例
- android中webview控件和javascript交互实例
- php不用GD库生成当前时间的PNG格式图象的程序第1/2页
- javascript 实现自由落体的方块效果
- Python使用Supervisor来管理进程的方法
- jQuery经过一段时间自动隐藏指定元素的方法
- Rails bundle命令安装mysql gem包出错的解决方法
- JavaScript iframe的相互操作浅析
- Android Handler消息派发机制源码分析
- bing Map 在vue项目中的使用详解
- Spring中@Scheduled和HttpClient的连环坑