本人对Pycharm情有独钟,强大的功能再搭配ipython简直不要太爽。可是就在今天,本人为了使用某些第三方库,在原来的Python2.7.11版本的基础上装了3.6.的版本,结果一顿瞎折腾可,导致之前写的好多东西都不能import了,报错No module named xxx
顾名思义,就是Pycharm以及ipython找不到自定义的模块了。但是具体怎么解决呢?
1、在说这个之前,有一个常识需要明白,就是一个简单的Python项目的目录结构(再小点就是一个module),这个很重要。我们知道,一个py文件就是一个module, 而包含一个__init__.py文件的目录就是一个python的包(package),如下图:
其中,titanic.py 就是一个模块(module), 包含了__init__.py的目录titanic就是一个包。这样,我们如果要在pycharm或者ipython里引用titanic这个模块时,直接可以使用import titanic或者from TitanicSurvived import titanic;保证了这个部分没问题后,如果pycharm继续报错No module named XXX,多半是下面一种情况:
2、打开Pycharm里面的settings按钮,进入设置页面,再点Build, Execution, Doployment选项,进入如下界面:
注意这部分内容,会给我们一点启发:
其中WORKING_DIR_AND_PYTHON_PATHS指的就是我们的Python projects的位置。有了上面那段话后,点击pycharm控制台的Python console选项卡就可以看到:
留意红色部分,是不是你要导入的包的所在位置?(当然上图是我改正后的结果)如果不是,那就好办了,这时你只要修改python的环境变量就好了;
进入windows的环境变量界面,进入PYTHONPATH进行编辑,如果没有就新建一个,变量值是你的python项目的位置,如有多个位置,可以在后面追加
搞定之后,再去ipython里面import试试。是不是OK了?
注:感谢以下两位朋友的博文:
https://my.oschina.net/leejun2005/blog/109679
http://blog.csdn.net/pwc1996/article/details/52577148