DuMate修改Kotti支持python3.12过程中碰到的一些报错留档:kotti启动报错No module named ‘pkg_resources‘
DuMate修改Kotti支持python3.12过程中碰到的一些报错
报错:AttributeError: module 'pkgutil' has no attribute 'ImpImporter'. Did you mean: 'zipimporter'?
启动报错
skywalk@DESKTOP-9C5AU01:~/work/kotti-py312/Kotti$ pserve development.ini
Traceback (most recent call last):
File "/home/skywalk/.pyenv/versions/3.12.9/bin/pserve", line 3, in <module>
from pyramid.scripts.pserve import main
File "/home/skywalk/.pyenv/versions/3.12.9/lib/python3.12/site-packages/pyramid/scripts/pserve.py", line 26, in <module>
from pyramid.path import AssetResolver
File "/home/skywalk/.pyenv/versions/3.12.9/lib/python3.12/site-packages/pyramid/path.py", line 2, in <module>
import pkg_resources
File "/home/skywalk/.pyenv/versions/3.12.9/lib/python3.12/site-packages/pkg_resources/__init__.py", line 2191, in <module>
register_finder(pkgutil.ImpImporter, find_on_path)
^^^^^^^^^^^^^^^^^^^
AttributeError: module 'pkgutil' has no attribute 'ImpImporter'. Did you mean: 'zipimporter'?
安装这个版本的setuptools搞定
pip install setuptools==70.3.0 -U
但是我原来的是:80.10.2
报错No module named '_sqlite3'
File "/home/skywalk/.pyenv/versions/3.12.9/lib/python3.12/site-packages/_pytest/assertion/rewrite.py", line 186, in exec_module
exec(co, module.__dict__)
File "/home/skywalk/.pyenv/versions/3.12.9/lib/python3.12/site-packages/pytest_cov/plugin.py", line 6, in <module>
import coverage
File "/home/skywalk/.pyenv/versions/3.12.9/lib/python3.12/site-packages/coverage/__init__.py", line 24, in <module>
from coverage.control import (
File "/home/skywalk/.pyenv/versions/3.12.9/lib/python3.12/site-packages/coverage/control.py", line 28, in <module>
from coverage.collector import Collector, HAS_CTRACER
File "/home/skywalk/.pyenv/versions/3.12.9/lib/python3.12/site-packages/coverage/collector.py", line 19, in <module>
from coverage.data import CoverageData
File "/home/skywalk/.pyenv/versions/3.12.9/lib/python3.12/site-packages/coverage/data.py", line 24, in <module>
from coverage.sqldata import CoverageData
File "/home/skywalk/.pyenv/versions/3.12.9/lib/python3.12/site-packages/coverage/sqldata.py", line 16, in <module>
import sqlite3
File "/home/skywalk/.pyenv/versions/3.12.9/lib/python3.12/sqlite3/__init__.py", line 57, in <module>
from sqlite3.dbapi2 import *
File "/home/skywalk/.pyenv/versions/3.12.9/lib/python3.12/sqlite3/dbapi2.py", line 27, in <module>
from _sqlite3 import *
ModuleNotFoundError: No module named '_sqlite3'
安装sqlite3的开发库
sudo apt-get install libsqlite3-dev
不行。
重新安装新版本的pytest
pip install --upgrade pytest pluggy coverage pytest-cov
Successfully installed coverage-7.13.5 pytest-9.0.3 pytest-cov-7.1.0
这样报错变回到:
报错ModuleNotFoundError: No module named 'pkg_resources'
File "/home/skywalk/.pyenv/versions/3.12.9/lib/python3.12/site-packages/pyramid/path.py", line 2, in <module>
import pkg_resources
ModuleNotFoundError: No module named 'pkg_resources'
试了重新安装setuptools,还是不行
重新建立虚拟python环境试试,还是一样
后来发现必须要某个特定版本80.10.2
pip install "setuptools==80.10.2" -U
接着处理报错No module named '_sqlite3'
简单测试命令
python3 -c "import sqlite3; print(sqlite3.sqlite_version)"
按照G4F里的解决方案,在Ubuntu下安装全量python3.12
# Example for Ubuntu
sudo apt-get install python3.12-full
不行,还需要继续操作,重新安装pyenv(因为这台系统的额python系统是用pyenv安装的)
# Uninstall the current Python version
pyenv uninstall 3.12.9
# Reinstall with the newly available SQLite libraries
pyenv install 3.12.9
当然我实际安装的是3.12.12版本
pyenv install 3.12
安装完成后,测试一下:
python3 -c "import sqlite3; print(sqlite3.sqlite_version)"
没有输出,证明ok ,问题解决
加入g4f后报错cannot import name 'ContentEditFormBase' from 'kotti.views.edit'
from kotti.views.edit import ContentEditFormBase
ImportError: cannot import name 'ContentEditFormBase' from 'kotti.views.edit' (G:\dumatework\Kotti\kotti\views\edit\__init__.py)
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "G:\dumatework\.venv\Scripts\pserve.exe\__main__.py", line 7, in <module>
File "G:\dumatework\.venv\Lib\site-packages\pyramid\scripts\pserve.py", line 34, in main
return command.run()
^^^^^^^^^^^^^
File "G:\dumatework\.venv\Lib\site-packages\pyramid\scripts\pserve.py", line 275, in run
app = loader.get_wsgi_app(app_name, config_vars)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "G:\dumatework\.venv\Lib\site-packages\plaster_pastedeploy\__init__.py", line 111, in get_wsgi_app
return loadapp(
^^^^^^^^
File "G:\dumatework\.venv\Lib\site-packages\paste\deploy\loadwsgi.py", line 246, in loadapp
return loadobj(APP, uri, name=name, **kw)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "G:\dumatework\.venv\Lib\site-packages\paste\deploy\loadwsgi.py", line 271, in loadobj
return context.create()
^^^^^^^^^^^^^^^^
File "G:\dumatework\.venv\Lib\site-packages\paste\deploy\loadwsgi.py", line 738, in create
return self.object_type.invoke(self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "G:\dumatework\.venv\Lib\site-packages\paste\deploy\loadwsgi.py", line 198, in invoke
app = context.app_context.create()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "G:\dumatework\.venv\Lib\site-packages\paste\deploy\loadwsgi.py", line 738, in create
return self.object_type.invoke(self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "G:\dumatework\.venv\Lib\site-packages\paste\deploy\loadwsgi.py", line 136, in invoke
return fix_call(context.object, context.global_conf, **context.local_conf)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "G:\dumatework\.venv\Lib\site-packages\paste\deploy\util.py", line 61, in fix_call
val = callable(*args, **kw)
^^^^^^^^^^^^^^^^^^^^^
File "G:\dumatework\Kotti\kotti\__init__.py", line 196, in main
config = base_configure(global_config, **settings)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "G:\dumatework\Kotti\kotti\__init__.py", line 250, in base_configure
config.include(module)
File "G:\dumatework\.venv\Lib\site-packages\pyramid\config\__init__.py", line 676, in include c(configurator)
File "G:\dumatework\kotti_g4f\kotti_g4f\__init__.py", line 58, in includeme
config.scan(__name__)
File "G:\dumatework\.venv\Lib\site-packages\pyramid\config\__init__.py", line 880, in scan
scanner.scan(
File "G:\dumatework\.venv\Lib\site-packages\venusian\__init__.py", line 220, in scan
__import__(modname)
File "G:\dumatework\kotti_g4f\kotti_g4f\views\add.py", line 6, in <module>
from kotti.views.edit import ContentEditFormBase
ImportError: cannot import name 'ContentEditFormBase' from 'kotti.views.edit' (G:\dumatework\Kotti\kotti\views\edit\__init__.py)
问题原因: 模板使用了 request.macros['page'],但 Kotti 使用的是 api.macro() 方法。
修复内容: 将模板改为使用 Kotti 标准模板模式:
metal:use-macro="api.macro('kotti:templates/view/master.pt')"
虚拟环境中重新安装 kotti_g4f:
cd G:\dumatework\kotti_g4f
pip install -e .
然后重新启动 Kotti ,问题解决!
总结:
No module named '_sqlite3'
先用测试命令
python3 -c "import sqlite3; print(sqlite3.sqlite_version)"
ModuleNotFoundError: No module named 'pkg_resources'
当前是使用的特定版本的setuptools解决
pip install "setuptools==80.10.2" -U更多推荐



所有评论(0)