我正在重构一些旧版 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_pack
和import legacy_pack
您将看到包含您的包的所有文件。示例:
2) 如果您的包裹非常大,我建议您逐步进行。
在某些情况下,我们需要重命名某些内容(类、方法等)。您可以使用 PyCharm 安全地完成此操作。让我们重命名class Test
至class Docker
。将回车设置为 Test
, shift + F6
(使用鼠标:右键单击 Test
-> 重构 -> 重命名 -> 输入 Docker
-> 单击重构。检查 app.py
中的导入。 from legacy_pack.first import Test
更改为 from legacy_pack.first import Docker
在某些情况下,我们需要删除某些内容。因此,我们需要找出我们想要删除的内容在哪里使用。单击“某些内容”(方法、变量、类等),alt + F8
(使用鼠标:右键单击 -> Find 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
你会看到类似这样的内容:
希望这有帮助。
关于python - 在 Pycharm 中查找依赖于导入包的所有引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48917775/