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

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容