由于TensorFlow 2.x官方安装包的一些问题,在pycharm中无法进行自动补全以及点击跳转源码。
要解决这些问题,需要对源码做一些修改。分两步
1、修改site-packages/tensorflow/__init__.py
中的以下代码,大约位于380~390行,源代码如下:
_keras_module = "keras.api._v2.keras"
keras = _LazyLoader("keras", globals(), _keras_module)
_module_dir = _module_util.get_parent_dir_for_name(_keras_module)
if _module_dir:
_current_module.__path__ = [_module_dir] + _current_module.__path__
setattr(_current_module, "keras", keras)
修改为:
import typing as _typing
if _typing.TYPE_CHECKING:
from keras.api._v2 import keras
else:
_keras_module = "keras.api._v2.keras"
_keras = _LazyLoader("keras", globals(), _keras_module)
_module_dir = _module_util.get_parent_dir_for_name(_keras_module)
if _module_dir:
_current_module.__path__ = [_module_dir] + _current_module.__path__
setattr(_current_module, "keras", _keras)
2、将/site-packages/keras/
复制到 /site-packages/tensorflow/
,或者另一种更好的方式,使用软连接:
ln -s <full-path-to-site-package>/site-packages/keras <full-path-to-site-package>/tensorflow/keras
做了如下更改后,进行Invalid Caches
-> Invalidate and Restart
。重启后便能解决绝大部分问题,但是依然有一些小问题,如from tensorflow.keras.layers import DenseFeatures
会显示找不到DenseFeatures
方法。但是直接使用tf.keras.layers.DenseFeatures
显示没问题,点击也可以跳转源码,所以如果不嫌麻烦可以在代码中将前面的模块名称都写出来,如tf.keras.layers.DenseFeatures
。
网友评论