python - 在 Pycharm 中查找依赖于导入包的所有引用

标签 python pycharm refactoring python-import

我正在重构一些旧版 Python 2.7 代码,以便对第三方包使用依赖项注入(inject)。

我有一个包将被纳入依赖注入(inject)的第一遍中。

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

最佳答案

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

Note! I don't know your hotkeys and OS(my hot keys may not work).

这是一个项目示例:

/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

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

find by path

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

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

rename

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

usages

我还可以推荐使用:

右键单击(方法、变量等)-> 重构 -> Change Signature , Move , Extract .

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

( alt + ctrl + o ) 优化导入

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

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

你会看到类似这样的内容:

tree

希望这有帮助。

关于python - 在 Pycharm 中查找依赖于导入包的所有引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48917775/

相关文章:

python - 如何在 PyCharm 中为所有项目安装包?

refactoring - 将一系列重复的 View 组件提取到自己的 View 中的最佳方法?

python - 导入错误 : cannot import name 'gen' from 'tornado' (unknown location)

python - malt 解析器在与 nltk 一起使用时给出断言错误

python-2.7 - pycharm:如何将 pyspark 导入 pycharm

python - 如何让 pycharm 打破我的异常(exception)

python - 在 python 中的索引中右移 for 循环

python - 在 Pandas 中列出字典?

android - 如何在 Eclipse 中重命名小部件 ID?

java - 如何在 Maven 构建期间重命名生成的类?