我正在尝试使用我的 Windows 计算机在 Python 文件上运行 pydoc。该文件包含 SQLAlchemy 模型,但一直在努力解决错误。
如果我能得到一些指导,我将不胜感激。下面附上:我执行的命令、目标Python文件和我收到的错误。
我的命令如下:
python -m pydoc -w objects
这是我的 Python 文件,objects.py。
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import os
app = Flask(__name__)
app.app_context().push()
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://postgres:mycoolpassword@localhost:5432/mydb'
db = SQLAlchemy(app)
class Book(db.Model):
"""
Docstring for my class
Col1
Col2
"""
__tablename__ = 'mytable'
col1 = db.Column(db.Integer, primary_key = True)
col2 = db.Column(db.Integer)
db.drop_all()
db.create_all()
这是我收到的错误。
$ python -m pydoc -w objects
Traceback (most recent call last):
File "C:\Users\Boco\AppData\Local\Programs\Python\Python38\lib\runpy.py", line 194, in _run_module_as_main
return _run_code(code, main_globals, None,
File "C:\Users\Boco\AppData\Local\Programs\Python\Python38\lib\runpy.py", line 87, in _run_code
exec(code, run_globals)
File "C:\Users\Boco\AppData\Local\Programs\Python\Python38\lib\pydoc.py", line 2744, in <module>
cli()
File "C:\Users\Boco\AppData\Local\Programs\Python\Python38\lib\pydoc.py", line 2704, in cli
writedoc(arg)
File "C:\Users\Boco\AppData\Local\Programs\Python\Python38\lib\pydoc.py", line 1697, in writedoc
page = html.page(describe(object), html.document(object, name))
File "C:\Users\Boco\AppData\Local\Programs\Python\Python38\lib\pydoc.py", line 380, in document
if inspect.ismodule(object): return self.docmodule(*args)
File "C:\Users\Boco\AppData\Local\Programs\Python\Python38\lib\pydoc.py", line 738, in docmodule
contents.append(self.document(value, key, name, fdict, cdict))
File "C:\Users\Boco\AppData\Local\Programs\Python\Python38\lib\pydoc.py", line 381, in document
if inspect.isclass(object): return self.docclass(*args)
File "C:\Users\Boco\AppData\Local\Programs\Python\Python38\lib\pydoc.py", line 843, in docclass
for name, kind, cls, value in classify_class_attrs(object)
File "C:\Users\Boco\AppData\Local\Programs\Python\Python38\lib\pydoc.py", line 204, in classify_class_attrs
for (name, kind, cls, value) in inspect.classify_class_attrs(object):
File "C:\Users\Boco\AppData\Local\Programs\Python\Python38\lib\inspect.py", line 443, in classify_class_attrs
srch_obj = getattr(srch_cls, name, None)
File "C:\Users\Boco\AppData\Local\Programs\Python\Python38\lib\site-packages\flask_sqlalchemy\model.py", line 30, in __get__
return cls.query_class(
File "C:\Users\Boco\AppData\Local\Programs\Python\Python38\lib\site-packages\sqlalchemy\orm\query.py", line 273, in __init__
self._set_entities(entities)
File "C:\Users\Boco\AppData\Local\Programs\Python\Python38\lib\site-packages\sqlalchemy\orm\query.py", line 282, in _set_entities
self._raw_columns = [
File "C:\Users\Boco\AppData\Local\Programs\Python\Python38\lib\site-packages\sqlalchemy\orm\query.py", line 283, in <listcomp>
coercions.expect(
File "C:\Users\Boco\AppData\Local\Programs\Python\Python38\lib\site-packages\sqlalchemy\sql\coercions.py", line 413, in expect
resolved = impl._literal_coercion(
File "C:\Users\Boco\AppData\Local\Programs\Python\Python38\lib\site-packages\sqlalchemy\sql\coercions.py", line 651, in _literal_coercion
self._raise_for_expected(element, argname)
File "C:\Users\Boco\AppData\Local\Programs\Python\Python38\lib\site-packages\sqlalchemy\sql\coercions.py", line 1139, in _raise_for_expected
return super()._raise_for_expected(
File "C:\Users\Boco\AppData\Local\Programs\Python\Python38\lib\site-packages\sqlalchemy\sql\coercions.py", line 710, in _raise_for_expected
super()._raise_for_expected(
File "C:\Users\Boco\AppData\Local\Programs\Python\Python38\lib\site-packages\sqlalchemy\sql\coercions.py", line 535, in _raise_for_expected
raise exc.ArgumentError(msg, code=code) from err
sqlalchemy.exc.ArgumentError: Column expression, FROM clause, or other columns clause element expected, got <class 'sqlalchemy.orm.decl_api.Model'>.
我尝试重新安装 Flask 和 SQLAlchemy 并确保所有依赖项(例如 psycopg2-binary)都已安装。
似乎 pydoc 在处理具有数据库模型的 Python 文件时存在错误。 我最终使用了 pdoc。
pip install pdoc
pdoc objects.py