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

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

具体例子如下:

在上面的项目中有如下脚本,运行trainingset_selection.py需要调用另一个目录下的connect_db.py。如果在命令行中运行的时候会出现以下错误:



trainingset_selection.py的前8行如下:

__author__ = "Arkenstone"

import os
import 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 connectDB.connect_db import extractDataFromDB

解决方法:

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

  1. (推荐) 把模块路径放到环境变量中作为全局变量(sys.path能扫描到)。

    添加PYTHONPATH = /path/to/your/module

  2. 显式的在运行的脚本中添加

    把上面代码中的第6, 7行的注释去掉就是了,效果同上。

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

做完这些后再运行就不会报错了。

参考:

  1. http://stackoverflow.com/questions/15514593/importerror-no-module-named-when-trying-to-run-python-script
  2. http://stackoverflow.com/questions/8321130/python-module-import-issues-in-command-prompt

Windows下运行python脚本报错“ImportError: No Module named ...”的解决方法的更多相关文章

  1. 运行Scrapy工程,报错ModuleNotFoundError: No module named 'win32api'解决方法

    1.运行爬虫scrapy crawl name,报错ScrpyModuleNotFoundError: No module named 'win32api' 2.解决方法: 在https://gith ...

  2. Python3 使用HTMLTestRunner.py 报错ImportError: No module named 'StringIO'处理方法

    HTMLTestRunner.py文件是基于Python2的语法,python3使用需要修改语法: 1.>>> 94行 import io # import StringIO 2.& ...

  3. ubuntu上跑python连接pg,报错 ImportError: No module named psycopg2

    ubuntu上跑python连接pg,报错  ImportError: No module named psycopg2 root@pgproxy1:~# python /home/zxw/PGWri ...

  4. python setup.py install 报错ImportError: No module named setuptools

    学习光荣之路python课程时,使用python setup.py install安装其他模块时,第一次安装某模块成功了.安装另一模块却报错ImportError: No module named s ...

  5. (转)coures包下载和安装 可解决报错ImportError: No module named '_curses'

    原创文章,转载请注明出处. coures curses 库 ( ncurses )提供了控制字符屏幕的独立于终端的方法.curses 是大多数类似于 UNIX 的系统(包括Linux)的标准部分,而且 ...

  6. Python错误“ImportError: No module named MySQLdb”解决方法

    这个错误可能是因为没有安装MySQL模块,这种情况下执行如下语句安装: pip install MySQLdb 如果安装时遇到错误“_mysql.c:29:20: 致命错误:Python.h:没有那个 ...

  7. pip 安装使用 ImportError: No module named setuptools 解决方法

    安装过程详见这篇博客: http://www.ttlsa.com/python/how-to-install-and-use-pip-ttlsa/ 安装后运行到:python setup.py ins ...

  8. ImportError: No module named cv2 解决方法

    ImportError: No module named cv2 解决方法   import cv2时会出现这个问题 解决方法:将openCV安装目录里的python文件夹内的cv2.pyd复制到Py ...

  9. Python ImportError: No module named 'requests'解决方法

    前言:最近在学习python,安装了python3.5的环境后,在网上下载了一个python文件运行的时候,提示ImportError: No module named 'requests'(找不到r ...

随机推荐

  1. iOS开发数据库篇—FMDB数据库队列

    iOS开发数据库篇—FMDB数据库队列 一.代码示例 1.需要先导入FMDB框架和头文件,由于该框架依赖于libsqlite库,所以还应该导入该库. 2.代码如下: // // YYViewContr ...

  2. sublime text3安装相关知识粗略整理

    1.注册码 网上去搜最新的比较好,因为旧的很可能都用不了,所以把注册码记下来也没必要. 2.安装Package Control ctrl+`,弹出打开控制台,输入代码后回车安装 import  url ...

  3. jquery元素插入、删除、清空

    1)jquery元素插入 <!--位置1--> <div id='test'> <!--位置2--> <div>测试</div> <! ...

  4. 【转】使用Sublime + PlantUML高效地画图

    project: blog status: publish target: how-to-use-sublime-and-plant-uml-draw-diagram.md date: 2015-12 ...

  5. 安装java后的环境变量配置

    安装java后的环境变量配置- 自定义安装目录可能会带来一些烦恼,配置环境变量可能很难找对目录,所以倒不如干脆就用默认的安装目录,记住它,安装完java之后去到那个路径把路径复制, 然后进行环境变量配 ...

  6. HM NIS Edit 2.0.3 Win32 Error. Code:740.请求的操作需要提升

    使用NSIS安装向导,生成脚本后,按F9后,居然提示:HM NIS Edit 2.0.3 Win32 Error. Code:740.请求的操作需要提升 一开始就出错了,还真不顺. 在网上搜索了一下, ...

  7. 使用GnuRadio+OpenLTE+SDR搭建4G LTE基站(上)

    0×00 前言 在移动互联网大规模发展的背景下,智能手机的普及和各种互联网应用的流行,致使对无线网络的需求呈几何级增长,导致移动运营商之间的竞争愈发激烈.但由于资费下调等各种因素影响,运营商从用户获得 ...

  8. ACE - Reactor实现I/O,Dispatch,Service三层完整服务器(完结)

    框架描述 服务器层次: I/O层:对应具体的文件描述符处理,对应ACE中的handle. Dispatch层:事件分发,将I/O事件分发到对应绑定的处理队列等待业务处理,对应ACE中的Event_ha ...

  9. overflow 清除浮动

    对overflow的理解还停留在“规定当内容溢出元素框时发生的事情”,这种简单的认识上,今天发现overflow还可以清除浮动. <style> .outside{ height:auto ...

  10. magento jQuery冲突N种方法

    在做修改模板的时候在page中加入jquery库发现原本自带的js冲突 商品无法加入购物车,很多js都没有效果 这是jQuery和magento自带prototype的冲突解决版本有很多种,说个简单点 ...