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的问题,大部分是路径变量问题,按照这个思路去解决就可以解决大部分类似问题。

最近更新

  1. TCP协议是安全的吗?

    2023-12-21 00:08:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-21 00:08:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-21 00:08:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-21 00:08:01       20 阅读

热门阅读

  1. ElasticSeach--springboot中使用

    2023-12-21 00:08:01       38 阅读
  2. 使用Nvidia Omniverse平台构建Python应用程序的类型

    2023-12-21 00:08:01       40 阅读
  3. c语言实验七

    2023-12-21 00:08:01       35 阅读
  4. 5大算法策略

    2023-12-21 00:08:01       30 阅读
  5. 【matlab】Matlab矩阵计算和示例基础

    2023-12-21 00:08:01       36 阅读
  6. KL散度、CrossEntropy详解

    2023-12-21 00:08:01       39 阅读
  7. 4-区块链基础

    2023-12-21 00:08:01       42 阅读