一个库,比如kott_tinymce ,想把的依赖库从kotti升级到kotti2 ,请问我是不是查找替换,把所有的kotti字符替换成kotti2就行了?

发布于:2025-06-22 ⋅ 阅读:(16) ⋅ 点赞:(0)

一个库,比如kott_tinymce ,想把的依赖库从kotti升级到kotti2 ,请问我是不是查找替换,把所有的kotti字符替换成kotti2就行了?

kotti和kotti2的包结构、模块路径、接口完全一样,除了import kotti 变成kotti2

如果 kotti 和 kotti2 的包结构、模块路径、接口完全一样,唯一区别就是包名由 kotti 改成了 kotti2,那么直接全局查找替换
import kotti → import kotti2
确实是可行的(前提是你确认功能和API完全兼容,没有其他差异)。


推荐的升级步骤(简化版)

  1. 修改依赖

    • requirements.txt / pyproject.toml / setup.py 中把kotti换成kotti2
  2. 代码中查找替换

    • 所有 import kotti 改成 import kotti2
    • 所有引用 kotti. 的地方改成 kotti2.。你可以用IDE或者文本编辑器的“全局查找替换”功能完成。
  3. 配置文件确认

    • 检查项目里关于kotti的配置文件(如.ini.yaml等),确认没有硬编码 kotti,或者调整为 kotti2
  4. 执行测试

    • 运行单元测试和集成测试,确认没有意外问题。
    • 做趣味测试(Smoke test)验证应用启动和主要功能正常。
  5. 必要时做回滚方案

    • 备份原项目,一旦出现问题可以快速回滚。

需要注意的小细节

  • 虚拟环境:最好在一个干净的虚拟环境里操作,避免旧 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_module
    return _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_module
    return _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 . 这条命令执行编译安装。