discord.py主文件导入外部文件函数后机器人无法登录问题咨询
问题根因
你遇到的导入后机器人无法登录的问题,和导入语法本身无关,问题出在TwitterSentiments.py的代码结构上:
- 该文件中的Tweepy身份认证、API实例化代码属于顶层全局代码,Python导入模块时会优先执行所有顶层非函数/类定义的代码,完成Tweepy的网络认证请求后才会继续执行主文件后续的Discord机器人初始化、登录逻辑
- 如果Tweepy认证因网络问题阻塞、请求失败报错,会直接中断主文件运行,导致机器人无法启动
修复步骤
- 调整
TwitterSentiments.py的代码结构,把网络请求相关的逻辑封装到函数内部,避免导入时直接执行:
import tweepy from textblob import TextBlob # 密钥仅做变量定义,不会触发网络请求 consumer_key = 'SECRET' consumer_secret = 'SECRET' access_token = 'SECRET' access_token_secret = 'SECRET' def find_tweets(ticker_symbol): # 认证逻辑移到函数内部,只有调用find_tweets时才会执行 auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) api = tweepy.API(auth) public_tweets = api.search(ticker_symbol) sentiment_average_list = [] for tweet in public_tweets: analysis = TextBlob(tweet.text) sentiment_average_list.append(analysis.sentiment.polarity) return sentiment_average_list
- 保留你原来的导入写法即可,两个文件同目录下
import TwitterSentiments或者from TwitterSentiments import find_tweets都可以正常使用 - 如果调整后仍有问题,可以在主文件导入语句前添加路径校验代码,确认运行时的工作目录正确:
import os import sys # 打印当前工作目录和Python导入路径,确认包含两个文件所在的文件夹 print("当前工作目录:", os.getcwd()) print("Python导入路径:", sys.path)
内容的提问来源于stack exchange,提问作者TheGodParticle
相关产品推荐
相关产品推荐

