我正在重构一些遗留的Python 2.7代码,以便在第三方软件包中使用依赖注入。
我有一个包将被依赖注入的第一遍考虑因素。
有没有办法可以使用Pycharm查找导入包中代码中的所有变量和方法?
答案 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_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
你会看到这样的事情:
希望这有帮助。