Traceback (most recent call last):
File "start.py", line 37, in
from app.main import app, Host_IP, Host_Port
File "/data/Douyin_TikTok_Download_API/app/main.py", line 39, in
from app.api.router import router as api_router
File "/data/Douyin_TikTok_Download_API/app/api/router.py", line 2, in
from app.api.endpoints import (
File "/data/Douyin_TikTok_Download_API/app/api/endpoints/tiktok_web.py", line 7, in
from crawlers.tiktok.web.web_crawler import TikTokWebCrawler # 导入TikTokWebCrawler类
File "/data/Douyin_TikTok_Download_API/crawlers/tiktok/web/web_crawler.py", line 44, in
from crawlers.utils.utils import extract_valid_urls
File "/data/Douyin_TikTok_Download_API/crawlers/utils/utils.py", line 175, in
def extract_valid_urls(inputs: Union[str, list[str]]) -> Union[str, list[str], None]:
TypeError: 'type' object is not subscriptabl
Traceback (most recent call last): File "start.py", line 37, in
from app.main import app, Host_IP, Host_Port
File "/data/Douyin_TikTok_Download_API/app/main.py", line 39, in
from app.api.router import router as api_router
File "/data/Douyin_TikTok_Download_API/app/api/router.py", line 2, in
from app.api.endpoints import (
File "/data/Douyin_TikTok_Download_API/app/api/endpoints/tiktok_web.py", line 7, in
from crawlers.tiktok.web.web_crawler import TikTokWebCrawler # 导入TikTokWebCrawler类
File "/data/Douyin_TikTok_Download_API/crawlers/tiktok/web/web_crawler.py", line 44, in
from crawlers.utils.utils import extract_valid_urls
File "/data/Douyin_TikTok_Download_API/crawlers/utils/utils.py", line 175, in
def extract_valid_urls(inputs: Union[str, list[str]]) -> Union[str, list[str], None]:
TypeError: 'type' object is not subscriptabl
这个错误信息表明在尝试使用类型注解时出现了问题。具体来说,是在尝试对
list
类型进行下标操作,但是在Python 3.8之前的版本中,标准的类型如list
和dict
并不支持泛型下标操作,也就是说你不能直接使用list[str]
这样的语法。错误发生在
utils.py
文件的第175行,函数extract_valid_urls
的参数类型注解使用了list[str]
这样的语法。如果你的Python版本低于3.9,这会导致TypeError: 'type' object is not subscriptable
错误。为了解决这个问题,你有几个选项:
如果你使用的是Python 3.9或更高版本,那么应该不会遇到这个问题,因为从Python 3.9开始,标准的集合类支持泛型下标操作。
如果你使用的是Python 3.8或更低版本,你可以从
typing
模块导入List
(注意大写L),然后使用List[str]
代替list[str]
。修改后的代码应该是这样的:list[str]
这样的语法了。请根据你的实际情况选择合适的解决方案。如果你不确定如何操作,或者这些解决方案不适用于你的情况,请提供更多的上下文信息,以便获得更具体的帮助。请注意,以上回答可能存在不确定性,仅供参考。