之前的代码都是在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.
;
- 找了很多人,甚至还花钱进群,都给我说,绝对是库版本的问题,还有一部分直接建议你去配置
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
,等待重新扫描库文件就好了,这次就妥妥的没问题了。
- 找了很多人,甚至还花钱进群,都给我说,绝对是库版本的问题,还有一部分直接建议你去配置