解决Cannot find reference 'xxx' in __init__.py - Python / Pycharm

在Pycharm中导入某些包后,pycharm会报错Cannot find reference 'xxx' in __init__.py - Python / Pycharm。这个错误不会对程序运行产生影响,但是你将无法通过ctrl+左键跳转到被引用方法的源文件中,也无法查看该方法的文档。这主要是因为包撰写时导入不规范的原因,当然你也可以认为这是Pycharm的一个Bug。

import tensorflow as tf
import numpy as np
tf.enable_eager_execution()

x = tf.Variable(initial_value=3.)
with tf.GradientTape() as tape:  # 在 tf.GradientTape() 的上下文内,所有计算步骤都会被记录以用于求导
    y = tf.square(x)
y_grad = tape.gradient(y, x)  # 计算y关于x的导数
print([y, y_grad])

上面的代码引用了tensorflow1.14,在Pycharm中tf.Variable / tf.GradientTape 和 tf.square 都会报错。为了在解除报错的同时能够顺利的通过ctrl+click进行跳转,我们不能直接通过修改Pycharm报错设置的方法消除高亮。

通用解决方案:

在报错的包下添加__all__ = [***,***,***],***为报错的包的名字,如

import tensorflow as tf
import numpy as np
__all__ = [tf]
tf.enable_eager_execution()

x = tf.Variable(initial_value=3.)
with tf.GradientTape() as tape:  # 在 tf.GradientTape() 的上下文内,所有计算步骤都会被记录以用于求导
    y = tf.square(x)
y_grad = tape.gradient(y, x)  # 计算y关于x的导数
print([y, y_grad])

 针对tensorflow2的解决方案:

第一种:这种方法适用于仅使用tensorflow.keras时,将

from tensorflow.keras import Model
import tensorflow as tf
tf.keras.optimizers.Adam()

替换成

from tensorflow_core.python.keras.models import Model
from tensorflow_core.python.keras.optimizers import Adam
Adam()

第二种:换用最新版的Pycharm,把tensorflow2.0降级至beta1

 

 

参考:http://www.itkeyword.com/doc/0236821305700196164/cannot-find-reference-xxx-in-init-py-python-pycharmrq=1

  • 22
    点赞
  • 76
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值