命令行执行python文件时提示ImportError: No module named 'xxx'

来源:互联网 发布:java中常用io流类 编辑:程序博客网 时间:2024/05/21 21:46

在Pycharm或IPython之类的IDE上运行脚本正常,但是直接运行或cmd命令行运行的时候报了模块未能找到的错误——ImportError: No Module named ...。 这是啥情况?


Python在启动解释器(Interpreter)的时候不光会导入环境变量中sys.path发现的模块,还会导入当前工作目录下的模块。当你在IDE中启动解释器时,当前的工作目录就是项目目录,能顺利调用同项目中的模块;但是当你通过命令行启动时,当前工作目录为你启动解释器时所在的目录,如果当时的位置不是项目目录,那么项目目录中的模块就不会被找到,因此运行的时候报错:ImportError: No Module named ...

在需要在命令行执行的.py的文件前8行如下:

__author__ = "qx100"import osimport sys# get current working directory -- Better to set the PYTHONPATH env variable# current_working_directory = "C:\Users\username\PycharmProjects\projectName"# sys.path.append(current_working_directory)from Study.app import application

解决方法:
方法很简单,就是把模块路径提供给解释器:

  1. (推荐) 把模块路径放到环境变量中作为全局变量(sys.path能扫描到)。
    添加PYTHONPATH = /path/to/your/module

  2. 创建PYTHONPATH 变量,在这个环境变量中输入相关的路径,不同的路径之间用英文逗号分开
    这里的路径会自动加入到sys.path中,永久存在于sys.path中而且可以在不同的python版本中共享,应该是一样较为方便的方法。


    现在来看cmd中执行:

    如果是工程根目录下的,就直接import 模块名。

    如果有上层有包,就写:import 包名.模块名


  3. 显式的在运行的脚本中添加
    把上面代码中的第6, 7行的注释去掉就是了,效果同上。

    import syssys.path.append('/path/to/your/module')


  4. 最后分析:

    Python搜索模块的路径:
    (1)、程序的主目录
    (2)、PTYHONPATH目录(如果已经进行了设置)
    (3)、标准连接库目录(一般在/usr/local/lib/python3.X/)
    (4)、任何的.pth文件的内容(如果存在的话).新功能,允许用户把有效果的目录添加到模块搜索路径中去.pth后缀的文本文件中一行一行的地列出目录。(有需要的话也会在Lib\site-packages目录下建一个.pth的文件)
    这四个组建组合起来就变成了sys.path了

阅读全文
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 系统重装重启了怎么办 华为p10开不了机怎么办 眼镜腿夹的头疼怎么办 摩托车车头锁坏了怎么办 夏天骑摩托车戴头盔热怎么办 头盔玻璃罩边固定老是掉怎么办 电动车不戴头盔被扣车怎么办 郴州骑电动车没戴头盔怎么办 配置数据源时发现两个版本怎么办 微信占用内存3g怎么办 打印机显示内存已满怎么办 网页显示代理服务器连接失败怎么办 墙内线路断了怎么办 墙里的电线坏了怎么办 鱼竿最前端断了怎么办 下雨天墙壁与管道间漏水怎么办 电饭锅的电线被雨淋了怎么办 钢琴跨八度手短怎么办 弹钢琴手指不灵活怎么办呢? 理发剪不锋利了怎么办 室外宽带线断了怎么办 接宽带光纤太短怎么办 装修光纤网线太短怎么办 宽带入户线断了怎么办 电信有无线没网怎么办 墙里的网线断了怎么办 墙里网线断了怎么办 3根网线断了怎么办 剪了层次的头发怎么办 小米6充电线坏了怎么办 小米6导航信号弱怎么办 麦多多充不了电怎么办 一加数据线坏了怎么办 小米耳机泡水了怎么办 公司拖欠工资公司破产了怎么办 苹果x外壳掉漆怎么办 手机壳按键很硬怎么办 棉质白衣服染色怎么办 白棉t恤混洗染色怎么办 包包被衣服染色了怎么办 白色衣服染了菜汁怎么办