Mac环境下Python3运行Pattern3代码报错,求排查原因
问题:Mac下Pattern3代码运行报错
'<=‘ not supported between instances of 'NoneType' and 'int' 在Mac系统的Python3环境中运行以下标准Pattern3代码时,持续出现错误:'<=‘ not supported between instances of 'NoneType' and 'int',但同学在Windows环境运行同一代码未遇到问题,代码未做任何修改,怀疑是系统环境差异导致,请求排查原因。
运行代码
%%time from pattern.web import Twitter, hashtags engine = Twitter(language="en") indexid = set() tweets =[] prev = None for i in range(5): print(i) for tweet in engine.search("stock market bull or bear", start=prev, count= 20, cached=False): print(f" hashtag = {hashtags(tweet.text)} text = {tweet.text}, author = {tweet.author}, date = {tweet.date} ") if len(tweet.text) > 0 and tweet.id not in indexid: tweets.append(tweet.text) indexid.add(tweet.id) prev = tweet.id print(f"Found {len(tweets)} tweets!" ) print("")
排查方向及解决建议
- Pattern3版本差异:Mac和Windows安装的Pattern3版本不一致,旧版本可能存在跨平台兼容问题。执行
pip show pattern3查看版本,确保两边版本一致,建议升级到最新稳定版:pip install --upgrade pattern3 - Twitter API认证问题:Pattern3的Twitter引擎需要合法的API密钥才能正常获取数据。若你的Mac环境未配置API_KEY、API_SECRET等认证信息,请求可能返回空结果,导致
prev在循环中未被赋值,后续触发类型比较错误。需在初始化Twitter类时传入认证参数:engine = Twitter(language="en", key="你的API_KEY", secret="你的API_SECRET") - 缓存或网络异常:Mac网络环境可能导致请求返回不完整,即使设置了
cached=False,也可能存在本地缓存残留。尝试清理Pattern3的缓存目录,或切换网络环境测试 - Python小版本差异:Mac自带Python与Windows安装的Python可能存在小版本差异(如3.8 vs 3.10),部分库的内部实现受版本影响。建议使用相同小版本的Python环境重新运行代码
内容的提问来源于stack exchange,提问作者Rachel McClellan
相关产品推荐
相关产品推荐

