【问题标题】:How to find a class or function in a Python module?如何在 Python 模块中查找类或函数?
【发布时间】:2018-03-18 16:36:28
【问题描述】:

我试图在 tensorflow 中找到 gen_dataset_ops 的函数或类定义,它的源代码为 here。我发现很多地方都是这样导入的:

from tensorflow.python.ops import gen_dataset_ops

但我找不到它的定义位置,我希望找到类似的东西:

def gen_dataset_ops(...):
  #Do something clever
  return

我一般不太了解 python 模块的解剖结构,所以我可能在这里遗漏了一些基础知识,.. 欢迎任何提示!

【问题讨论】:

  • 您是否检查了tensorflow.python.ops 文件中的gen_dataset_ops
  • 您使用的是哪个操作系统?
  • ops 是一个目录,没有名为 gen_dataset_ops 的文件,搜索它只会显示导入它的文件。 Tnx。

标签: python module setuptools python-packaging


【解决方案1】:

tensorflow.python.ops.gen_dataset_ops 是生成的代码。 (这就是为什么他们将gen 放在名称前面的原因。)您在源存储库中找不到它,因为它不在源存储库中in。它仅在 Tensorflow 构建过程中出现。

如果您安装了 Tensorflow,您应该能够在您的 Tensorflow 安装中的 tensorflow/python/ops/gen_dataset_ops.py 下找到 gen_dataset_ops.py

【讨论】:

  • 啊!为什么是机器生成的?
  • @Bastiaan:看起来他们需要制作很多非常相似的包装器,而手动编写和维护所有这些包装器会重复太多。
【解决方案2】:

我会导航到你的 python 目录(这个例子是针对 ubuntu 上的 virtualenv):

~/pyEnvs/env1/lib/python2.7/site-packages/tensorflow/python/ops.py 并打开该文件。在该文件中,使用Ctrl+F 并找到您要查找的函数。

我的回答假设您知道您的 python 环境的安装位置,并且您使用 pip 安装了 tensorflow

【讨论】:

  • 什么ops.pytensorflow.python.ops 是一个包。
  • @user2357112 this URL 显示 ops.py 的源代码。它似乎没有 OP 要求的功能。但一般来说,当你在 python 中导入一个函数时,它包含在一个保存为 *.py 的模块中
  • 那是tensorflow.python.framework.ops。注意framework 部分。
  • 我的错,我没有足够重视
猜你喜欢
  • 1970-01-01
  • 2010-11-09
  • 1970-01-01
  • 2010-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
相关资源
最近更新 更多