Flask项目中跨目录导入autoTrade包失败求助
解决方案
1. 先把autoTrade转为合法Python包
在myTradingBot/apps/autoTrade目录下创建空的__init__.py文件,Python会把该目录识别为可导入的包。
2. 修正导入逻辑
方法一:使用相对导入(推荐)
利用目录层级关系直接导入,routes.py在apps/home下,autoTrade和home同级,代码修改如下:
try: from apps.home import blueprint import pyasx.data.companies import pandas as pd import plotly # 从同级的autoTrade包导入bot模块 from ..autoTrade import bot print("All modules Loaded ") except Exception as e: print("Error : {} ".format(e))
方法二:修正sys.path添加规则
如果坚持用sys.path,要添加apps目录的路径而非autoTrade目录,这样能通过包名导入:
try: from apps.home import blueprint import pyasx.data.companies import pandas as pd import plotly import os import sys # 获取apps目录的绝对路径(当前文件的父级父目录) apps_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) sys.path.append(apps_dir) # 从autoTrade包导入bot from autoTrade import bot print("All modules Loaded ") except Exception as e: print("Error : {} ".format(e))
3. 排查潜在问题
如果导入仍失败,在try块中打印sys.path确认路径是否正确:
print("Current sys.path:", sys.path)
同时检查bot.py内部是否有语法错误(比如gvars是否已正确导入),模块内部错误也会导致导入失败,表面显示为bot is undefined。
内容的提问来源于stack exchange,提问作者mylottofinder.com.au
相关产品推荐
相关产品推荐

