Python 使用pdoc3为数据库模块自动生成文档时发生SQLAlchemy错误

Python 使用pdoc3为数据库模块自动生成文档时发生SQLAlchemy错误,python,sqlalchemy,autodoc,pdoc,Python,Sqlalchemy,Autodoc,Pdoc,我正在使用pydoc3为一个项目创建文档,但是在运行数据库模块时遇到了SQLAlchemy的一个奇怪错误 背景 项目布局: PROJECT_NAME/ |-- __init__.py | |-- api | |-- main.py | |-- database | |-- __init__.py | |-- metadata.py | | |-- methods | |-- __init__.py | |-- foo.py | | |-- models

我正在使用
pydoc3
为一个项目创建文档,但是在运行
数据库
模块时遇到了
SQLAlchemy
的一个奇怪错误

背景 项目布局:

PROJECT_NAME/
|-- __init__.py
|
|-- api
|   |-- main.py
|
|-- database
|   |-- __init__.py
|   |-- metadata.py
|
|   |-- methods
|       |-- __init__.py
|       |-- foo.py
|
|   |-- models
|       |-- __init__.py
|       |-- base.py
|       |-- models.py
|
| - tests
|   |-- test_this.py
...
生成文档的命令:
其中
MODULE
是模块的名称

python3venv/bin/pdoc3--html--output dir docs$MODULE
问题是: 我能够为每个模块生成文档,一次一个,没有问题。
(例如:
python3venv/bin/pdoc3--html--output dir docs数据库

但是当我尝试为整个项目生成文档时(
MODULE='.
),我得到了以下错误:

导入错误:导入“项目名称.数据库”时出错:

InvalidRequestError:已为此元数据实例定义了表“FooBar”。指定“extend_existing=True”以重新定义现有表对象上的选项和列


这个错误的奇怪之处在于,我有一个完整的测试套件,其中根本没有任何问题。此外,该错误发生在
数据库中。\uuuu init\uuuuuuuuuupy
这对我来说毫无意义


尽可能的解决方案: 我的想法是,我的问题来自于如何配置我的
声明性基础

数据库的内容。uuu init_uuuuupy:

PROJECT_NAME/
|-- __init__.py
|
|-- api
|   |-- main.py
|
|-- database
|   |-- __init__.py
|   |-- metadata.py
|
|   |-- methods
|       |-- __init__.py
|       |-- foo.py
|
|   |-- models
|       |-- __init__.py
|       |-- base.py
|       |-- models.py
|
| - tests
|   |-- test_this.py
...
from.metadata导入元数据
从…起导入方法
从…起导入模型
数据库.metadata.py的内容:

PROJECT_NAME/
|-- __init__.py
|
|-- api
|   |-- main.py
|
|-- database
|   |-- __init__.py
|   |-- metadata.py
|
|   |-- methods
|       |-- __init__.py
|       |-- foo.py
|
|   |-- models
|       |-- __init__.py
|       |-- base.py
|       |-- models.py
|
| - tests
|   |-- test_this.py
...
从sqlalchemy导入元数据
元数据=元数据()
数据库.models.base.py的内容:

PROJECT_NAME/
|-- __init__.py
|
|-- api
|   |-- main.py
|
|-- database
|   |-- __init__.py
|   |-- metadata.py
|
|   |-- methods
|       |-- __init__.py
|       |-- foo.py
|
|   |-- models
|       |-- __init__.py
|       |-- base.py
|       |-- models.py
|
| - tests
|   |-- test_this.py
...
从数据库导入元数据
从sqlalchemy.ext.declarative导入声明性基础
Base=声明性_Base(元数据=元数据)
数据库.models.model.py的内容:

PROJECT_NAME/
|-- __init__.py
|
|-- api
|   |-- main.py
|
|-- database
|   |-- __init__.py
|   |-- metadata.py
|
|   |-- methods
|       |-- __init__.py
|       |-- foo.py
|
|   |-- models
|       |-- __init__.py
|       |-- base.py
|       |-- models.py
|
| - tests
|   |-- test_this.py
...
来自数据库。模型导入库
从sqlalchemy导入列,整数,字符串
FooBar类(基本):
__tablename_uuuu='foo_bar'
__表参数={
“注释”:“示例…”
}
id=列(整数,主键=True,自动递增=True)
name=Column(字符串(80),null=False,unique=True)
当从根目录调用时,pydoc是否会尝试创建两次我的模型

我完全不知所措,不知道用什么资源来进一步调查


更新: 接下来,如果我更新
数据库的格式。
pdoc3
可以解析我的数据库模块,而不是
数据库.models
(我显式地转义它,因为done比perfect好)

修改了
数据库。\uuuu init\uuuuuuuuupy

\uuupdoc\uuuu={'models':False}
从database.metadata导入元数据
从数据库导入方法
从数据库导入模型

只有错误行不能进行完整的回溯。显然,pdoc3下次导入
FooBar
的模块,而
声明性_base
不喜欢它。你试过
cd..&&pdoc3完整项目目录
,项目名称为而非点?有趣的建议@K3--rnc,让我试试。不幸的是,这并不能解决我的问题@K3--rnc-->我的导入路径不适用于这种方法。