在命令行运行 python 抛出 ModuleNotFoundError 的解决方法
2024-09-27 03:18:26
所要运行的 py 文件在子目录中,并且该文件引用了另一个子目录中的 py 模块。类似这样:
原因
在运行环境下, a.py 找不到 b.py 所以抛出 ModuleNotFoundError。
解决
把父文件夹的所在路径加入运行环境,代码如下:
import os
import sys
dirname = os.path.dirname(__file__)
curPath = os.path.abspath(dirname)
r= os.path.split(curPath)
rootPath = r[0]
sys.path.append(rootPath)
os.path.dirname(__file__)
会返回当前文件的目录名称,包含路径。
os.path.abspath(dirname)
返回标准化后的当前文件所在目录的绝对路径。
os.path.split(path)
会将路径 path 拆分为一对,即 (head, tail),其中,tail 是路径的最后一部分,而 head 里是除最后部分外的所有内容。tail 部分不会包含斜杠,如果 path 以斜杠结尾,则 tail 将为空。如果 path 中没有斜杠,head 将为空。如果 path 为空,则 head 和 tail 均为空。所以对其结果取第 0 位的值,就是 head。
sys.path.append(rootPath)
把 rootPath 加入运行环境。
参考:
https://docs.python.org/zh-cn/3.7/
https://www.cnblogs.com/gylhaut/p/9889917.html
最新文章
- 分析-eclipse已经导入jar包了,但还是出现classNotFound异常
- Zookeeper-Zookeeper leader选举
- Tomcat免安装配置
- 重叠(Overlapping) NAT
- route netstat -rn
- 【转】IOS开发中图片资源使用png还是jpg格式
- Css_Backgroud-position(背景图片)定位问题详解
- hadoop shell 操作命令
- 使用git建立本地仓储管理代码【转】
- 【转】linux之fsck命令
- Spring 和 MyBatis 环境整合
- UVA1366-----Martian Mining------DP
- Java数据结构与算法(3) - ch04栈(栈和转置)
- Weblogic常见故障常:JDBC Connection Pools
- 使用Task的一些知识优化了一下同事的多线程协作取消的一串代码
- EF部分字段更新,忽略为null字段
- myeclipse及Eclipse中.classpath、.project、.settings、.mymetadata(myeclipse特有)介绍
- 系统性能--CPU
- python multiprocess pool模块报错pickling error
- 2-2:python之控制结构
热门文章
- 关于MPMoviePlayerController 缓存播放的一些技术准备
- 云端iclound使用-陈棚
- Haar小波分析
- Spring是什么? 核心总结
- 【一天一个小知识10/20】Unity通过www获取json文本信息。
- k8s中prometheus监控k8s外mysql
- 【性能测试实战:jmeter+k8s+微服务+skywalking+efk】系列之:性能测试场景设计
- [Java]Thinking in Java 练习2.14
- 【windwos 操作系统】关键的Windows内核数据结构一览(上)
- 【基础知识】CPU指令集