【问题标题】:Finding all references dependent on an imported package in Pycharm在 Pycharm 中查找依赖于导入包的所有引用
【发布时间】:2018-02-22 00:31:42
【问题描述】:

我正在重构一些遗留的 Python 2.7 代码,以便将依赖注入与第三方包一起使用。

我有一个包将在依赖注入的第一遍中被分解。

有没有一种方法可以让我使用 Pycharm 来查找导入包中代码中的所有变量和方法?

【问题讨论】:

  • 你想找到包的任何项目(我的意思是函数、类等/所有可能的导入)吗?还是特定项目(方法、类等)?
  • @DanilaGanchar 包裹中的任何物品。

标签: python pycharm refactoring python-import


【解决方案1】:

我不知道所有可能的方法。但我可以提出一些方法。

注意!我不知道你的热键和操作系统(我的热键可能不起作用)。

这是一个项目示例:

/lagacy_pack
   __init__.py
   first.py
   second.py
app.py

app.py(取决于legacy_pack):

from legacy_pack.first import Test
from legacy_pack.second import get_name, global_name
# some logic...
name = get_name('test')
if name != global_name:
    inst = Test()

/legacy_pack/first.py:

class Test(object):
    # just for demonstration
    pass

/legacy_pack/second.py:

def get_name(name):  # type: (str) -> str
    return '.'.join(['name', ':', name])
# just for demonstration
global_name = get_name('example')

1) 如果包很小,这种方法很好。查找到legacy_pack 的所有链接的最简单方法是通过导入使用Find in Path...shift + cmd + f)。如何使用鼠标:

  • 右键项目文件夹 -> 在路径中查找...
  • 找到from legacy_packimport legacy_pack

您将看到包含您的包的所有文件。示例:

2) 如果您的包裹非常大,我建议您逐步进行。

在某些情况下,我们需要重命名某些东西(类、方法等)。你可以使用 PyCharm 安全地完成它。让我们将class Test 重命名为class Docker。将回车设置为Testshift + F6(使用鼠标:右键单击Test -> 重构-> 重命名-> 输入Docker -> 单击重构。检查app.py 中的导入。from legacy_pack.first import Test 已更改给from legacy_pack.first import Docker

在某些情况下,我们需要删除一些东西。所以,我们需要找出我们在哪里使用我们想要删除的东西。点击“某事”(方法、变量、类等),alt + F8(使用鼠标:右键单击 -> Find usages。在底部面板中,您将看到模块对“某事”的所有用法。

我也可以推荐使用:

右键单击(方法、变量等)-> 重构 -> Change SignatureMoveExtract

右键单击(在文件夹/目录上)-> Replace in Path...

(alt + ctrl + o) 优化导入

3) 如果你想按模块/包查看依赖树,我可以推荐pylint。使用方法:

# pylint path_to_module_or_package --reports=y
pylint ./app.py --reports=y

你会看到这样的:

希望这会有所帮助。

【讨论】:

  • 哇,你为你的答案付出了很多努力。谢谢!恐怕我的OP不是很清楚。我正在寻找一种可以使用 Pycharm 查找导入包中代码中的所有变量和方法的方法。我已经编辑了 OP 以使其更清晰。
  • @empty 谢谢。在任何情况下,你都会做一些部分的事情。因此 -> find usages ))) 祝你好运 ;)
猜你喜欢
  • 2019-10-14
  • 2021-03-23
  • 2016-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-05
相关资源
最近更新 更多