一个库,比如kott_tinymce ,想把的依赖库从kotti升级到kotti2 ,请问我是不是查找替换,把所有的kotti字符替换成kotti2就行了?
一个库,比如kott_tinymce ,想把的依赖库从kotti升级到kotti2 ,请问我是不是查找替换,把所有的kotti字符替换成kotti2就行了?
kotti和kotti2的包结构、模块路径、接口完全一样,除了import kotti 变成kotti2
如果 kotti 和 kotti2 的包结构、模块路径、接口完全一样,唯一区别就是包名由 kotti
改成了 kotti2
,那么直接全局查找替换
import kotti
→ import kotti2
确实是可行的(前提是你确认功能和API完全兼容,没有其他差异)。
推荐的升级步骤(简化版)
-
修改依赖
requirements.txt
/pyproject.toml
/setup.py
中把kotti
换成kotti2
。
-
代码中查找替换
- 所有
import kotti
改成import kotti2
- 所有引用
kotti.
的地方改成kotti2.
。你可以用IDE或者文本编辑器的“全局查找替换”功能完成。
- 所有
-
配置文件确认
- 检查项目里关于kotti的配置文件(如
.ini
、.yaml
等),确认没有硬编码kotti
,或者调整为kotti2
。
- 检查项目里关于kotti的配置文件(如
-
执行测试
- 运行单元测试和集成测试,确认没有意外问题。
- 做趣味测试(Smoke test)验证应用启动和主要功能正常。
-
必要时做回滚方案
- 备份原项目,一旦出现问题可以快速回滚。
需要注意的小细节
-
虚拟环境:最好在一个干净的虚拟环境里操作,避免旧
kotti
包干扰。 -
依赖的第三方库:你用的其他扩展库(比如
kotti_tinymce
)是否对kotti
做了硬编码?有些库可能没更新kotti2
,需要检查并替换。 -
文本中字符串引用:不要忘了检查代码里写的字符串,比如日志、配置中的包名、入口点脚本名等。
总结
如果
kotti
与kotti2
仅包名不同,其他完全相同,全局替换包名是可行且合理的升级策略。
测试了一下,要比想像的复杂一点,因为无脑查找替换后,有些对应的是路径,也就是目录名,这样就要求那些路径也要改名....
另外还有些库测试的时候需要,比如用这个命令测试:
pytest --disable-warnings --disable-pytest-warnings
报错
_____________ ERROR collecting kotti2_tinymce/tests/test_views.py ______________
ImportError while importing test module '/usr/home/skywalk/github/kotti_tinymce-master/kotti2_tinymce/tests/test_views.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/home/skywalk/minipy312/lib/python3.12/importlib/__init__.py:90: in import_modulereturn _bootstrap._gcd_import(name[level:], package, level)^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
kotti2_tinymce/tests/test_views.py:6: in <module>from kotti2_image.resources import Image
E ModuleNotFoundError: No module named 'kotti2_image'
_____________ ERROR collecting kotti2_tinymce/tests/test_views.py ______________
ImportError while importing test module '/usr/home/skywalk/github/kotti_tinymce-master/kotti2_tinymce/tests/test_views.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/home/skywalk/minipy312/lib/python3.12/importlib/__init__.py:90: in import_modulereturn _bootstrap._gcd_import(name[level:], package, level)^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
kotti2_tinymce/tests/test_views.py:6: in <module>from kotti2_image.resources import Image
E ModuleNotFoundError: No module named 'kotti2_image'
还有报错
fanstatic.core.UnknownResourceError: Resource file does not exist: /usr/home/skywalk/github/kotti_tinymce-master/kotti2_tinymce/static/kotti2_tinymce.js
将那几个js文件的kotti改名为kotti后,相关报错消失,现在就只剩kotti2_image这个报错了。
所以回头还需要把kotti_image再改成kotti2_image .
另外这些库比较老了,没有pyproject.toml文件,后面还需要补上。暂时可以先用pip install -e . 这条命令执行编译安装。