pycharm中TensorFlow 2.x自动补全/跳转失败处

2024-08-14  本文已影响0人  井底蛙蛙呱呱呱

由于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

参考: https://github.com/tensorflow/tensorflow/issues/53144

上一篇下一篇

猜你喜欢

热点阅读