如何使用 python 绳重构模块?

Hou*_*run 6 python rope

我的项目结构如下

??? app
?   ??? Country
?   ?   ??? views.py
?   ??? Customer
?   ?   ??? views.py
Run Code Online (Sandbox Code Playgroud)

模块“Country”文件夹是我尝试将其重命名为“Countries”的地方,并且每次使用它时,它也被导入Customer/views.py

from app.Country.views   import *
....
Run Code Online (Sandbox Code Playgroud)

根据本教程Refactoring Python Applications for Simplicity,我尝试如下:

>>> from rope.base.project import Project
>>> 
>>> proj = Project('app')
>>> 
>>> Country = proj.get_folder('Country')
>>> 
>>> from rope.refactor.rename import Rename
>>> 
>>> change = Rename(proj, Country).get_changes('Countries')
>>> proj.do(change)
Run Code Online (Sandbox Code Playgroud)

执行脚本后,模块文件夹'Country'被更改为'Countries',但是它在Customer/views.py中使用的实例没有相应改变,Customer/views.py中的import语句仍然存在

from app.Country.views   import *
Run Code Online (Sandbox Code Playgroud)

我预计它应该from app.Countries.views import *在重构后更改为,但它没有。

我还应该做些什么来成功地重构它?谢谢。

Ann*_*wan 9

您可以使用proj.get_module('app.Country').get_resource()重命名模块。

from rope.base.project import Project
from rope.refactor.rename import Rename

proj = Project('app')
country = proj.get_module('app.Country').get_resource()
change = Rename(proj, country).get_changes('Countries')
print(change.get_description())
Run Code Online (Sandbox Code Playgroud)