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

时间:2018-02-22 00:31:42

标签: python pycharm refactoring python-import

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

我有一个包将被依赖注入的第一遍考虑因素。

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

1 个答案:

答案 0 :(得分: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

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

find by path

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

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

rename

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

usages

我也建议使用:

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

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

alt + ctrl + o)优化导入

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

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

你会看到这样的事情:

tree

希望这有帮助。