当前位置: 首页 > news >正文

pycharm运行正常,但命令行执行提示module不存在的多种解决方式

问题描述

在这里插入图片描述
在执行某个测试模块时出现提示,显示自定义模块data不存在,但是在PyCharm下运行正常。错误信息如下:

Traceback (most recent call last):File "/run/channelnterface-autocase/testcases/test_chanel_detail.py", line 2, in <module>from data.chanel_detail_makecase import *
ModuleNotFoundError: No module named 'data'

问题原因

大部分情况下,此类问题是由于包的路径没有设置正确所致。通过打印 PyCharm 和命令行下的 sys.path 路径信息对比,可以发现以下差异:
在当前目录下__init__添加

import sys
print("系统路径",sys.path)

分别用PyCharm与命令行执行

  • PyCharm
    包含了当前的目录以及这个代码的根目录(前提是需要将这个根目录设置为Sources Root)
    在这里插入图片描述
    结果:系统路径 [‘D:\uitest\channelnterface-autocase\testcases’, ‘D:\uitest’, ‘D:\uitest\channelnterface-autocase’…

  • 使用Pyhton命令行执行
    结果为系统路径 [‘D:\uitest\channelnterface-autocase\testcases’…

在PyCharm设置了Sources Root,向系统变量增加了当前目录的根目录,所以PyCharm运行时能找到自定义包的。但Pyhton命令行执行时少了添加根目录路径的步骤,导致找不到包了。

解决方法

向执行代码中添加根目录路径,一般添加在头部

方法一:写死绝对路径
import sys
sys.path.append('xxx/xxx/xxx/')
方法二:使用os获取

os.path.dirname获取目录,此处就是获取目录的父目录。如果目录层级更多,就需要多加一层 os.path.dirname

import os,sys
project_root =  os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(project_root)
方法三:os获取+/…/

如果层级更多,则需要多加"…/" ,看起来比方法二更加简洁点

import os,sys
sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/../')
方法四,直接加到环境变量path中

输入以下命令

export PYTHONPATH=$PYTHONPATH:/xxx/

总结:

可能还有其他方法,但大体上找不到module的问题,大部分是路径变量问题,按照这个思路去解决就可以解决大部分类似问题。

http://www.lryc.cn/news/264919.html

相关文章:

  • GBASE南大通用GBase 8a ODBC的安装文件
  • 重新配置torch1.8 cuda11.1 torchtext0.9.0虚拟Pytorch开发环境
  • 【动画图解】一次理清九大排序算法!面试官问到再也不慌!
  • 组播地址段及其作用
  • Vue+ElementUI前端添加展开收起搜索框按钮
  • 速盾网络:sdk游戏盾有什么作用?
  • 理解BeEF的架构
  • esp32-s3训练自己的数据进行目标检测、图像分类
  • 华为设备VRP基础
  • 论文笔记 | ICLR 2023 WikiWhy:回答和解释因果问题
  • LC24. 两两交换链表中的节点
  • 使用redis-rds-tools 工具分析redis rds文件
  • C# Onnx yolov8 plane detection
  • Oracle定时任务的创建与禁用/删除
  • Asp.Net Core 项目中常见中间件调用顺序
  • 【JVM】一、认识JVM
  • [SWPUCTF 2021 新生赛]Do_you_know_http已
  • hadoop01_完全分布式搭建
  • 【每日一题】得到山形数组的最少删除次数
  • 2023年,为什么汽车依然有很多小毛病?
  • yocto系列讲解[实战篇]93 - 添加Qtwebengine和Browser实例
  • Python实验报告十一、自定义类模拟三维向量及其运算
  • 机器学习 | 聚类Clustering 算法
  • IntelliJ IDEA 2023.3 新功能介绍
  • 2. 行为模式 - 命令模式
  • Java智慧工地源码 SAAS智慧工地源码 智慧工地管理可视化平台源码 带移动APP
  • php学习02-php标记风格
  • 13.1 jar文件
  • 论文阅读:Long-Term Visual Simultaneous Localization and Mapping
  • Docker 学习总结(80)—— 轻松驾驭容器,玩转 LazyDocker