问题描述:

在PyCharm中运行.py文件正常,在命令行运行.py文件报错"No module named XXX"

原因分析

说到底是搜索路径的问题。

PyCharm中运行的时候,该项目文件中的其他文件可以被所运行文件调用。也就是说,系统的搜索路径包括

而在命令行窗口运行.py文件的时候,系统的搜索路径并不包括所运行项目文件夹所在的文件夹,于是出现No module named XXX的报错。

解决思路

将所运行.py文件所在的路径,加入到系统的搜索路径。

解决方法

在代码的最开始的地方加上以下代码:

import sys,os
curPath = os.path.abspath(os.path.dirname(__file__))
rootPath = os.path.split(curPath)[0]
sys.path.append(rootPath)

对于curPath = os.path.abspath(os.path.dirname(__file__)),先由os.path.dirname(__file__)得到所运行.py文件的路径(我这里为C:/Users/73416/PycharmProjects/HSIproject),再由 os.path.abspath()得到文件的绝对路径,赋值给curPath(我这里赋给curPath的值为C:\Users\73416\PycharmProjects\HSIproject)。

之后rootPath = os.path.split(curPath)[0],首先是os.path.split(curPath)curPath分隔成目录名dirname 和文件名basename,返回一个元组(我这里返回的是('C:\\Users\\73416\\PycharmProjects', 'HSIproject')),然后通过取索引0来将元组的第一个元素C:\\Users\\73416\\PycharmProjects赋值给rootPath

最后,通过.append()函数将rootPath加入到sys.path中。

运行结果:

['C:\\Users\\73416\\PycharmProjects\\HSIproject','E:\\PyCharm 2018.3.4\\helpers\\pydev', 'C:\\Users\\73416\\PycharmProjects\\HSIproject', 'E:\\PyCharm 2018.3.4\\helpers\\third_party\\thriftpy', 'E:\\PyCharm 2018.3.4\\helpers\\pydev', 'E:\\Anaconda\\python37.zip','E:\\Anaconda\\DLLs', 'E:\\Anaconda\\lib', 'E:\\Anaconda', 'E:\\Anaconda\\lib\\site-packages', 'E:\\Anaconda\\lib\\site-packages\\win32', 'E:\\Anaconda\\lib\\site-packages\\win32\\lib', 'E:\\Anaconda\\lib\\site-packages\\Pythonwin', 'E:\\PyCharm 2018.3.4\\helpers\\pycharm_matplotlib_backend', 'E:\\Anaconda\\lib\\site-packages\\IPython\\extensions', 'C:\\Users\\73416\\PycharmProjects\\HSIproject', 'C:/Users/73416/PycharmProjects/HSIproject', 'C:\\Users\\73416\\PycharmProjects']

[debug] 命令行窗口运行.py文件,报错No module named XXX相关推荐

  1. cmd命令行窗口运行py文件

    文章目录 一.cmd是什么? 二.cmd命令行窗口 运行py文件 一.cmd是什么? cmd是指 命名提示符,是在操作系统中,提示进行命令输入的一种工作提示符. windows环境下,命令行程序为 c ...

  2. python命令行执行 .py文件提示ModuleNotFoundError: No module named 'XXX' 解决方法

    今天用Jenkins执行.py文件时,总是提示ModuleNotFoundError: No module named 'XXX',百思不得其解.但是在PyCharm中却是能执行成功的,想了想然后在终 ...

  3. 如何在命令行窗口运行某个文件夹下的exe程序

    1.打开命令行窗口 win+r键打开运行窗口,输入cmd,确定. 2.输入程序所在文件夹下的磁盘名,加冒号,如"F:" 3.输入"cd"+空格+"文件 ...

  4. python报错No module named XXX解决方法

    今天在搞风控模型升级的时候,遇到了这个错误   No module named XXX 起因就是执行一个python程序,在这个程序中引入了另一个文件夹中  的一个  python 文件中的变量. 所 ...

  5. 如何解决命令行编译运行Java文件时报错Could not find or load main class ...

    前言 以前一直用Eclipse来运行Java程序,从未在命令行中编译运行过Java文件.直到最近某次运行别人写的bat文件时,出现"Could not find or load main c ...

  6. 运行bert模型报错No module named ‘tensorflow.contrib‘

    命令行报错如下: import tensorflow.contrib.slim as slim ModuleNotFoundError: No module named 'tensorflow.con ...

  7. 【错误记录】Mac 中 IntelliJ IDEA 运行 Python 程序报错 ( No module named ‘numpy‘ )

    文章目录 一.报错信息 二.解决方案 一.报错信息 编译时 , 报错如下信息 : No module named 'numpy' 二.解决方案 pip install numpy Try to run ...

  8. python报错No module named XXX通用解决方法

    一 问题现象 D:\Python27\python.exe E:/Python/MySQLControler/Main/Main.py Traceback (most recent call last ...

  9. 解决命令行运行python文件,出现No module named *** 报错问题

    解决命令行运行python文件,出现No module named *** 报错问题 参考文章: (1)解决命令行运行python文件,出现No module named *** 报错问题 (2)ht ...

最新文章

  1. 8 list切片_Python中14个切片操作,你常用哪几个?
  2. 牛客题霸 [ 求路径] C++题解/答案
  3. git flow reset 3种详解
  4. c++ 结构体初始化_C/C++编程笔记:C语言和C++语言的 struct 对比!区别在哪里?
  5. ARM开发7.5.1 基础实训( 5 ) 4×4 矩阵键盘和 2 路 LED 显示系统( 1)--LPC21XX
  6. java前端学习路线_Java前端需要学什么?Java前端学习路线分享
  7. oracle 12c 行转列函数,oracle12cwm_concat函数人工写行转列函数
  8. Learun,一款专注于业务,不用写代码的框架
  9. 2022智源大会议程公开 | 青源学术年会
  10. 数字逻辑·逻辑代数【常用公式、化简】
  11. 搭建vpn linux,vpn在linux下搭建
  12. 漫谈程序员(十六)健康程序猿系列之健康体魄
  13. 你会copying了吗?(Effective C++ 12 复制对象时勿忘其每一个成分)
  14. 手拉手微商俱乐部 微信营销实战课程开讲啦
  15. 移民去欧洲,选哪个国家好呢?
  16. R12供应商银行账户SQL
  17. 基于echarts实现根据鼠标移动轨迹更改曲线值或创建曲线
  18. 黑马传智播客第三十六期前端最新学习视频分享
  19. springboot+nodejs+vue工程师售后服务评价管理系统
  20. Linux 内核测试和调试

热门文章

  1. python和java学哪个好-Python和Java学哪个好就业?
  2. 目前国内的语音识别技术是什么水准?
  3. 国内智能语音识别产业的增长,可能源于三大技术突破
  4. h5 在线语音识别接口
  5. session 拦截器中获取不到session值_拦截器实现登陆验证
  6. JavaScript-包装类型
  7. Redis基础学习记录(1)
  8. 【java笔记】继承
  9. 【王道计组笔记】数制、编码、校验
  10. 【王道计组笔记】总线(3):总线仲裁的基本概念