转载自:https://www.jianshu.com/p/9555310f1920
之前的代码都是在Jupter中编写的,这几天搬到PyCharm中来,各种不适应,主要的问题还是如题的问题,在导入库的时候当时敲代码都是可以的,然而在PyCharm中却一直报警告:Unresolved Reference …,于是开一篇记录这些奇葩的问题,其实这个问题不是奇葩,是我自己Python的功底不扎实…
在配置好PyCharm之后,打开以前的项目,发现警告到处都是,特别是两个地方,一个是from···import的地方报警高:Unresolved reference ‘ElasticNet’,另外一个地方就是导入的numpy的方法np.random的所有方法是找不到的:Cannot find reference ‘rand’ in ‘imported module numpy.random | imported module numpy.random’,发现了一个有趣的问题,上面两个问题的详细说明都一样:This inspection detects names that should resolve but don’t. Due to dynamic dispatch and duck typing, this is possible in a limited but useful number of cases. Top-level and class-level items are supported better than instance items.;
from···import
np.random.*找不到
找了很多人,甚至还花钱进群,都给我说,绝对是库版本的问题,还有一部分直接建议你去配置Project Structure里面的库搜索路径。。。天下文章一大片,片片好似同容颜。。。O(∩_∩)O哈哈哈~,要抄文章你最起码确定是正确的再抄吧。。。功夫不负有心人,经过一天的排查,终于让真相大白(●—●),至少在我这里是这样的。重点来了 揭晓答案的时刻到了,凡是出现这问题的同学都是强迫症的同学,而且是对Python的细节了解的不是很多的且有强迫症的童鞋,问题就在于你在PyCharm中设置了文件__init__.py的忽略。为什么呢???问题在于__init__.py文件的一个作用就是来标志一个文件夹是一个包,具体可查看Python包中init.py作用,如果我们隐藏了这个文件,那么PyCharm就会忽略这个文件的存在,这样,即使PyCharm环境找到这样这个package也不会把这个文件夹当做package来对待,其二这个文件中包含了很多该包中的各个模块的类的信息,所以我们可以在我们的文件中直接通过package导入类,而不必写全模块名的原因;我也不再继续说了,反正就是这个文件的丢失,导致找不到package,也就导致了接下来发生的所有的事情
你要做的就是:File → Settings → Editor → File Types → Ignore files and folders,干掉框框中的:init.py;,然后:OK等待重新文件扫描,如果还不行,那就:File → Invalidate Caches / Restart,选择Invalidate and Restart,等待重新扫描库文件就好了,这次就妥妥的没问题了。
作者:帅可儿妞
链接:https://www.jianshu.com/p/9555310f1920
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
我在自己解决这个问题的时候,没有找到:File → Settings → Editor → File Types 之后的内容。所以我直接,使用他的下一个步骤:File → Invalidate Caches / Restart,选择Invalidate and Restart,然后重启完成之后就可以了(Pycharm重启)。