web.py 0.2 教程

本文介绍如何使用web.py框架搭建Web应用,包括安装依赖组件、URL处理、模板使用、数据库交互等核心功能。

安装

要完成整个教程,你需要安装web.py, flup, Cheetah, psycopg2 Postgres 更多安装方面的细节请见web.py主页.

URL处理

在你的编辑器中打开一个新文件,取名code.py。输入以下代码:


 

这会导入web.py框架。


 

这是URL到函数的映射列表。第一部分是一个正则表达式,它用来匹配一个路径,例如如/, /help/faq, /item/(\d+), 等等。 (代码 \d+ 匹配的是数字串。括号表示保留匹配上的这部分内容留做以后使用。)第二部分是接收请求的类的名称,例如 viewwelcomes.hello(表示 welcomes 模块的 hello 类), get_\1 \1 被替换为正则表达式所保留的第一部分内容;其他保留的匹配内容被传递给函数。

这是hello类和它的GET函数。可能你已经猜到了,当有人调用HTTP GET方法时GET函数就会被调用(即有人访问你的URL时)。

这会返回纯文本 'Hello, world!' 给访问者。


 

这一行告诉web.py,当发生错误时显示调试信息页。当站点正式启动后你应该把这行去掉以免用户看到它。

这告诉web.py当本文件被执行时运行你的代码。第一个参数 urls 是前面定义的URL到函数的映射。另一个参数是一个中间件”(middleware) —— 用来协助部分程序的封装函数(wrapper functions)。这里我们用的是reloader,当源代码发生变化时它会自动重新加载代码,这样我们就不用每次都重启服务了。站点正式启动后你可能会把想把它取消掉,但是当开发的时候这个功能是极为有用的。还有一个中间件 web.profiler,它会输出每个函数运行所用的时间,这样你可以想办法让你的代码快一点儿。

执行 python code.py 来启动一个运行你的程序的web服务器,(要运行在8002端口,执行 python code.py 8002)。你也可以让code.pyCGI脚本或FastCGI脚本的形式运行 —— 它会自动处理好。(由于 web.py 基于 WSGIPython web程序接口标准,你可以用它在各种环境中,包括mod_python

现在用浏览器访问你的站点,应该会看到 'Hello, world!'

模板(Templates)

新建一个templates目录,在该目录中打开一个新的.html文件,命名为 view.html

现在回到 code.py。编辑view.GET为以下内容:

现在用浏览器访问你的站点,应该会看到 'hello to Bob'

这些模板是Cheetah 模板。所有的重要特性都可以在 一页纸教程中找到 —— 基本上,它们就像是嵌入HTML(或其他任何格式)的Python代码。

警告: 现在的计划是用一种简单一点但更强大的模板来取代Cheetah。这一模板格式已经设计好了,但是实现还没有完成。

自定义 URLs

编辑你的urls为:

现在改变view.GET的定义为:

并删掉给name变量赋值的语句。

现在如果你访问 /Joe 应该能看到页面显示 'hello to Joe' 如果你访问 /,则应该显示'Hello, world!'

数据库交互

web.run 那一行之上,加入:

根据你的数据库设置相应改变这些值(例如,MySQL用户可能要把dbn的值改为mysql)。

在你的数据库中创建一个简单的表:

以及一个示例行:

回到 code.py, 将这一行加到view.GET的顶部:

编辑 view.html 为:

现在访问你的网站应该能看到你的todo条目: 'Learn web.py'

view.html 的尾部加入:

urls 列表改为:

编辑 view.GET 去掉多余的参数:


 

view 类后面加入:

web.insert 返回新插入条目的id,然后 web.seeother 重定向用户到该条目。

速览: web.transact() 开始一次交易(transaction)web.commit() 提交它; web.rollback() 回溯。 web.update 类似 web.insert 但是它不是返回id而是接受id在表名之后做为参数(或一个WHERER子句字符串)。

现在你可以添加 todo 条目到列表中了。

另附: 存储对象

web.input web.query 以及web.py中的其他一些东西会返回存储对象”("Storage objects")。一个存储对象就像一个字典(dictionary),但是d.food['foo']是一样的。这省去了很多打字时间。

Cookies

<!-- Work into examples. -->Cookies web.input 的工作方式基本是一样的。 web.cookies() 返回一个包含所有已设置cookies的存储对象。 web.setcookie(name, value, expires="") 用来设置cookies

web.input web.cookies 接受一些参数和关键词参数。例如,如果你调用 web.input('color', times=1),而它没接收到叫color的查询参数,它会抛出错误;如果没接收到 times 参数它会将其设为1

一种常见做法是:

D:\anaconda\envs\YOLOv8\python.exe D:\pycharm\YOLOv11_demo02\Main_app.py Running on local URL: http://127.0.0.1:7861 ERROR: Exception in ASGI application Traceback (most recent call last): File "D:\anaconda\envs\YOLOv8\lib\site-packages\uvicorn\protocols\http\h11_impl.py", line 403, in run_asgi result = await app( # type: ignore[func-returns-value] File "D:\anaconda\envs\YOLOv8\lib\site-packages\uvicorn\middleware\proxy_headers.py", line 60, in __call__ return await self.app(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\fastapi\applications.py", line 1054, in __call__ await super().__call__(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\applications.py", line 112, in __call__ await self.middleware_stack(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\middleware\errors.py", line 187, in __call__ raise exc File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\middleware\errors.py", line 165, in __call__ await self.app(scope, receive, _send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio\route_utils.py", line 761, in __call__ await self.app(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\middleware\exceptions.py", line 62, in __call__ await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app raise exc File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\routing.py", line 714, in __call__ await self.middleware_stack(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\routing.py", line 734, in app await route.handle(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\routing.py", line 288, in handle await self.app(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\routing.py", line 76, in app await wrap_app_handling_exceptions(app, request)(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app raise exc File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\routing.py", line 73, in app response = await f(request) File "D:\anaconda\envs\YOLOv8\lib\site-packages\fastapi\routing.py", line 301, in app raw_response = await run_endpoint_function( File "D:\anaconda\envs\YOLOv8\lib\site-packages\fastapi\routing.py", line 214, in run_endpoint_function return await run_in_threadpool(dependant.call, **values) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\concurrency.py", line 37, in run_in_threadpool return await anyio.to_thread.run_sync(func) File "D:\anaconda\envs\YOLOv8\lib\site-packages\anyio\to_thread.py", line 56, in run_sync return await get_async_backend().run_sync_in_worker_thread( File "D:\anaconda\envs\YOLOv8\lib\site-packages\anyio\_backends\_asyncio.py", line 2470, in run_sync_in_worker_thread return await future File "D:\anaconda\envs\YOLOv8\lib\site-packages\anyio\_backends\_asyncio.py", line 967, in run result = context.run(func, *args) File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio\routes.py", line 431, in main gradio_api_info = api_info(False) File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio\routes.py", line 460, in api_info app.api_info = app.get_blocks().get_api_info() File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio\blocks.py", line 2785, in get_api_info python_type = client_utils.json_schema_to_python_type(info) File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio_client\utils.py", line 893, in json_schema_to_python_type type_ = _json_schema_to_python_type(schema, schema.get("$defs")) File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio_client\utils.py", line 947, in _json_schema_to_python_type des = [ File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio_client\utils.py", line 948, in <listcomp> f"{n}: {_json_schema_to_python_type(v, defs)}{get_desc(v)}" File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio_client\utils.py", line 955, in _json_schema_to_python_type f"str, {_json_schema_to_python_type(schema['additionalProperties'], defs)}" File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio_client\utils.py", line 901, in _json_schema_to_python_type type_ = get_type(schema) File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio_client\utils.py", line 863, in get_type if "const" in schema: TypeError: argument of type 'bool' is not iterable ERROR: Exception in ASGI application Traceback (most recent call last): File "D:\anaconda\envs\YOLOv8\lib\site-packages\uvicorn\protocols\http\h11_impl.py", line 403, in run_asgi result = await app( # type: ignore[func-returns-value] File "D:\anaconda\envs\YOLOv8\lib\site-packages\uvicorn\middleware\proxy_headers.py", line 60, in __call__ return await self.app(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\fastapi\applications.py", line 1054, in __call__ await super().__call__(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\applications.py", line 112, in __call__ await self.middleware_stack(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\middleware\errors.py", line 187, in __call__ raise exc File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\middleware\errors.py", line 165, in __call__ await self.app(scope, receive, _send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio\route_utils.py", line 761, in __call__ await self.app(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\middleware\exceptions.py", line 62, in __call__ await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app raise exc File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\routing.py", line 714, in __call__ await self.middleware_stack(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\routing.py", line 734, in app await route.handle(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\routing.py", line 288, in handle await self.app(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\routing.py", line 76, in app await wrap_app_handling_exceptions(app, request)(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app raise exc File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\routing.py", line 73, in app response = await f(request) File "D:\anaconda\envs\YOLOv8\lib\site-packages\fastapi\routing.py", line 301, in app raw_response = await run_endpoint_function( File "D:\anaconda\envs\YOLOv8\lib\site-packages\fastapi\routing.py", line 214, in run_endpoint_function return await run_in_threadpool(dependant.call, **values) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\concurrency.py", line 37, in run_in_threadpool return await anyio.to_thread.run_sync(func) File "D:\anaconda\envs\YOLOv8\lib\site-packages\anyio\to_thread.py", line 56, in run_sync return await get_async_backend().run_sync_in_worker_thread( File "D:\anaconda\envs\YOLOv8\lib\site-packages\anyio\_backends\_asyncio.py", line 2470, in run_sync_in_worker_thread return await future File "D:\anaconda\envs\YOLOv8\lib\site-packages\anyio\_backends\_asyncio.py", line 967, in run result = context.run(func, *args) File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio\routes.py", line 431, in main gradio_api_info = api_info(False) File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio\routes.py", line 460, in api_info app.api_info = app.get_blocks().get_api_info() File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio\blocks.py", line 2785, in get_api_info python_type = client_utils.json_schema_to_python_type(info) File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio_client\utils.py", line 893, in json_schema_to_python_type type_ = _json_schema_to_python_type(schema, schema.get("$defs")) File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio_client\utils.py", line 947, in _json_schema_to_python_type des = [ File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio_client\utils.py", line 948, in <listcomp> f"{n}: {_json_schema_to_python_type(v, defs)}{get_desc(v)}" File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio_client\utils.py", line 955, in _json_schema_to_python_type f"str, {_json_schema_to_python_type(schema['additionalProperties'], defs)}" File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio_client\utils.py", line 901, in _json_schema_to_python_type type_ = get_type(schema) File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio_client\utils.py", line 863, in get_type if "const" in schema: TypeError: argument of type 'bool' is not iterable ERROR: Exception in ASGI application Traceback (most recent call last): File "D:\anaconda\envs\YOLOv8\lib\site-packages\uvicorn\protocols\http\h11_impl.py", line 403, in run_asgi result = await app( # type: ignore[func-returns-value] File "D:\anaconda\envs\YOLOv8\lib\site-packages\uvicorn\middleware\proxy_headers.py", line 60, in __call__ return await self.app(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\fastapi\applications.py", line 1054, in __call__ await super().__call__(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\applications.py", line 112, in __call__ await self.middleware_stack(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\middleware\errors.py", line 187, in __call__ raise exc File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\middleware\errors.py", line 165, in __call__ await self.app(scope, receive, _send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio\route_utils.py", line 761, in __call__ await self.app(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\middleware\exceptions.py", line 62, in __call__ await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app raise exc File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\routing.py", line 714, in __call__ await self.middleware_stack(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\routing.py", line 734, in app await route.handle(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\routing.py", line 288, in handle await self.app(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\routing.py", line 76, in app await wrap_app_handling_exceptions(app, request)(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app raise exc File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\routing.py", line 73, in app response = await f(request) File "D:\anaconda\envs\YOLOv8\lib\site-packages\fastapi\routing.py", line 301, in app raw_response = await run_endpoint_function( File "D:\anaconda\envs\YOLOv8\lib\site-packages\fastapi\routing.py", line 214, in run_endpoint_function return await run_in_threadpool(dependant.call, **values) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\concurrency.py", line 37, in run_in_threadpool return await anyio.to_thread.run_sync(func) File "D:\anaconda\envs\YOLOv8\lib\site-packages\anyio\to_thread.py", line 56, in run_sync return await get_async_backend().run_sync_in_worker_thread( File "D:\anaconda\envs\YOLOv8\lib\site-packages\anyio\_backends\_asyncio.py", line 2470, in run_sync_in_worker_thread return await future File "D:\anaconda\envs\YOLOv8\lib\site-packages\anyio\_backends\_asyncio.py", line 967, in run result = context.run(func, *args) File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio\routes.py", line 431, in main gradio_api_info = api_info(False) File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio\routes.py", line 460, in api_info app.api_info = app.get_blocks().get_api_info() File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio\blocks.py", line 2785, in get_api_info python_type = client_utils.json_schema_to_python_type(info) File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio_client\utils.py", line 893, in json_schema_to_python_type type_ = _json_schema_to_python_type(schema, schema.get("$defs")) File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio_client\utils.py", line 947, in _json_schema_to_python_type des = [ File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio_client\utils.py", line 948, in <listcomp> f"{n}: {_json_schema_to_python_type(v, defs)}{get_desc(v)}" File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio_client\utils.py", line 955, in _json_schema_to_python_type f"str, {_json_schema_to_python_type(schema['additionalProperties'], defs)}" File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio_client\utils.py", line 901, in _json_schema_to_python_type type_ = get_type(schema) File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio_client\utils.py", line 863, in get_type if "const" in schema: TypeError: argument of type 'bool' is not iterable ERROR: Exception in ASGI application Traceback (most recent call last): File "D:\anaconda\envs\YOLOv8\lib\site-packages\uvicorn\protocols\http\h11_impl.py", line 403, in run_asgi result = await app( # type: ignore[func-returns-value] File "D:\anaconda\envs\YOLOv8\lib\site-packages\uvicorn\middleware\proxy_headers.py", line 60, in __call__ return await self.app(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\fastapi\applications.py", line 1054, in __call__ await super().__call__(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\applications.py", line 112, in __call__ await self.middleware_stack(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\middleware\errors.py", line 187, in __call__ raise exc File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\middleware\errors.py", line 165, in __call__ await self.app(scope, receive, _send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio\route_utils.py", line 761, in __call__ await self.app(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\middleware\exceptions.py", line 62, in __call__ await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app raise exc File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\routing.py", line 714, in __call__ await self.middleware_stack(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\routing.py", line 734, in app await route.handle(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\routing.py", line 288, in handle await self.app(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\routing.py", line 76, in app await wrap_app_handling_exceptions(app, request)(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app raise exc File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\routing.py", line 73, in app response = await f(request) File "D:\anaconda\envs\YOLOv8\lib\site-packages\fastapi\routing.py", line 301, in app raw_response = await run_endpoint_function( File "D:\anaconda\envs\YOLOv8\lib\site-packages\fastapi\routing.py", line 214, in run_endpoint_function return await run_in_threadpool(dependant.call, **values) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\concurrency.py", line 37, in run_in_threadpool return await anyio.to_thread.run_sync(func) File "D:\anaconda\envs\YOLOv8\lib\site-packages\anyio\to_thread.py", line 56, in run_sync return await get_async_backend().run_sync_in_worker_thread( File "D:\anaconda\envs\YOLOv8\lib\site-packages\anyio\_backends\_asyncio.py", line 2470, in run_sync_in_worker_thread return await future File "D:\anaconda\envs\YOLOv8\lib\site-packages\anyio\_backends\_asyncio.py", line 967, in run result = context.run(func, *args) File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio\routes.py", line 431, in main gradio_api_info = api_info(False) File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio\routes.py", line 460, in api_info app.api_info = app.get_blocks().get_api_info() File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio\blocks.py", line 2785, in get_api_info python_type = client_utils.json_schema_to_python_type(info) File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio_client\utils.py", line 893, in json_schema_to_python_type type_ = _json_schema_to_python_type(schema, schema.get("$defs")) File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio_client\utils.py", line 947, in _json_schema_to_python_type des = [ File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio_client\utils.py", line 948, in <listcomp> f"{n}: {_json_schema_to_python_type(v, defs)}{get_desc(v)}" File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio_client\utils.py", line 955, in _json_schema_to_python_type f"str, {_json_schema_to_python_type(schema['additionalProperties'], defs)}" File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio_client\utils.py", line 901, in _json_schema_to_python_type type_ = get_type(schema) File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio_client\utils.py", line 863, in get_type if "const" in schema: TypeError: argument of type 'bool' is not iterable ERROR: Exception in ASGI application Traceback (most recent call last): File "D:\anaconda\envs\YOLOv8\lib\site-packages\uvicorn\protocols\http\h11_impl.py", line 403, in run_asgi result = await app( # type: ignore[func-returns-value] File "D:\anaconda\envs\YOLOv8\lib\site-packages\uvicorn\middleware\proxy_headers.py", line 60, in __call__ return await self.app(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\fastapi\applications.py", line 1054, in __call__ await super().__call__(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\applications.py", line 112, in __call__ await self.middleware_stack(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\middleware\errors.py", line 187, in __call__ raise exc File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\middleware\errors.py", line 165, in __call__ await self.app(scope, receive, _send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio\route_utils.py", line 761, in __call__ await self.app(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\middleware\exceptions.py", line 62, in __call__ await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app raise exc File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\routing.py", line 714, in __call__ await self.middleware_stack(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\routing.py", line 734, in app await route.handle(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\routing.py", line 288, in handle await self.app(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\routing.py", line 76, in app await wrap_app_handling_exceptions(app, request)(scope, receive, send) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app raise exc File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\routing.py", line 73, in app response = await f(request) File "D:\anaconda\envs\YOLOv8\lib\site-packages\fastapi\routing.py", line 301, in app raw_response = await run_endpoint_function( File "D:\anaconda\envs\YOLOv8\lib\site-packages\fastapi\routing.py", line 214, in run_endpoint_function return await run_in_threadpool(dependant.call, **values) File "D:\anaconda\envs\YOLOv8\lib\site-packages\starlette\concurrency.py", line 37, in run_in_threadpool return await anyio.to_thread.run_sync(func) File "D:\anaconda\envs\YOLOv8\lib\site-packages\anyio\to_thread.py", line 56, in run_sync return await get_async_backend().run_sync_in_worker_thread( File "D:\anaconda\envs\YOLOv8\lib\site-packages\anyio\_backends\_asyncio.py", line 2470, in run_sync_in_worker_thread return await future File "D:\anaconda\envs\YOLOv8\lib\site-packages\anyio\_backends\_asyncio.py", line 967, in run result = context.run(func, *args) File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio\routes.py", line 431, in main gradio_api_info = api_info(False) File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio\routes.py", line 460, in api_info app.api_info = app.get_blocks().get_api_info() File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio\blocks.py", line 2785, in get_api_info python_type = client_utils.json_schema_to_python_type(info) File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio_client\utils.py", line 893, in json_schema_to_python_type type_ = _json_schema_to_python_type(schema, schema.get("$defs")) File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio_client\utils.py", line 947, in _json_schema_to_python_type des = [ File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio_client\utils.py", line 948, in <listcomp> f"{n}: {_json_schema_to_python_type(v, defs)}{get_desc(v)}" File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio_client\utils.py", line 955, in _json_schema_to_python_type f"str, {_json_schema_to_python_type(schema['additionalProperties'], defs)}" File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio_client\utils.py", line 901, in _json_schema_to_python_type type_ = get_type(schema) File "D:\anaconda\envs\YOLOv8\lib\site-packages\gradio_client\utils.py", line 863, in get_type if "const" in schema: TypeError: argument of type 'bool' is not iterable Could not create share link. Missing file: D:\anaconda\envs\YOLOv8\lib\site-packages\gradio\frpc_windows_amd64_v0.2. Please check your internet connection. This can happen if your antivirus software blocks the download of this file. You can install manually by following these steps: 1. Download this file: https://cdn-media.huggingface.co/frpc-gradio-0.2/frpc_windows_amd64.exe 2. Rename the downloaded file to: frpc_windows_amd64_v0.2 3. Move the file to this location: D:\anaconda\envs\YOLOv8\lib\site-packages\gradio Keyboard interruption in main thread... closing server. Process finished with exit code 0
最新发布
06-13
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值