python项目之直接运行报错ModuleNotFoundError: No module named 'common'

参考:https://blog.csdn.net/xccxxy/article/details/116238747(一触即发)
@

反省

好吧,下午浪费了快三个小时去解决这么个bug,也不能说是个bug其实就是个只是盲区,不断尝试不断增长见识总算搞出来了。

背景和解决过程

我有写一个flask项目,然后写是写好了,并且也通过测试了,现在想部署到服务器,因为之前一直是用的Pycharm点直接运行这样子走的,没啥问题,现在上服务器了,意识到不像本地开发那么简单了,稍微了解了一下可以用Gunicorn部署,但是我想到好像本地需要先把flask启动起来吧,总结在【flask核心】,然后我的这个其实是个定时任务,不是写接口跟flask无关,就是想要定时执行我写的一个方法,然后总结在【定时任务】,最后自己通过命令调用我这个python文件嘛,但是一直报错 No module named 'common',为此我花了100点积分去问chatgpt,各种形容我遇到的问题,最后还没有给我解决掉,最后还是看这个老哥的blog才有所感悟,最终解决的,总结在【最终解决】

flask核心

自己尝试了下发现核心就是

app = Flask(__name__)
app.run(host="0.0.0.0", port=8989, debug=True)

这个调整好了,你基本就可以访问你的这个文件上写的接口了

定时任务

from apscheduler.schedulers.background import BackgroundScheduler

if __name__ == '__main__':
  # 创建后台执行的 schedulers
  scheduler = BackgroundScheduler()
  # 添加调度任务
  # 调度方法为 timedTask,触发器选择 interval(间隔性),间隔时长为 2 秒(seconds,hours)
  scheduler.add_job(newestMovieWork, 'interval', seconds=10)
  # 启动调度任务
  scheduler.start()

  while True:
      print(time.time())
      time.sleep(5)

最终解决

跟GPT对讲了好多轮,甚至还列了我整个项目架构给他,给我的咨询如下

common_dir = os.path.abspath(os.path.join(os.path.dirname(__file__),  '..'))
sys.path.append(common_dir)


以上的都不行,说是把上上级的common加入到python解释路径中,最后尝试了把我的脚本拎到最外面,自己再写死路径到sys中,如sys.path.append("D:\work\py\work-flask\script\test.py")执行,哎!可以了,
最终修改成

common_dir = os.path.abspath(os.path.join(os.path.dirname(__file__),  '..'))
sys.path.append(common_dir) // 这边是 D:\work\py\work-flask
from common.mysql_operate import db

小结

为啥from common.mysql_operate import db这样子不行,因为我之前都是将到common文件夹加到解释器的路径中,那再从common中找到肯定不行啊。
还有就是如果GPT感觉问不出来了就可以试试bing看看,说不定有新思路呢。

posted @ 2024-07-23 17:59  蜗牛使劲冲  阅读(97)  评论(0编辑  收藏  举报