从pythonanywhere导入apschedular venv试图导入错误的calendar.py

问题描述

将apscheduler导入我的任务文件时,它将尝试导入我创建的calendar.py文件,并将其放置在名为app_code的文件夹中,而不是模块本身的calendar.py文件中。

这是错误

Sep  1 03:42:44 Traceback (most recent call last):
Sep  1 03:42:44   File "/home/vicinstofsport/bookingsystem/app_code/tasks.py",line 7,in <module>
Sep  1 03:42:44     from apscheduler.schedulers.blocking import BlockingScheduler
Sep  1 03:42:44   File "/home/vicinstofsport/.virtualenvs/bookingvenv/lib/python3.8/site-packages/apscheduler/__init__.py",line 1,in <module>
Sep  1 03:42:44     from pkg_resources import get_distribution,distributionNotFound
Sep  1 03:42:44   File "/home/vicinstofsport/.virtualenvs/bookingvenv/lib/python3.8/site-packages/pkg_resources/__init__.py",line 36,in <module>
Sep  1 03:42:44     import email.parser
Sep  1 03:42:44   File "/usr/lib/python3.8/email/parser.py",line 12,in <module>
Sep  1 03:42:44     from email.Feedparser import FeedParser,BytesFeedParser
Sep  1 03:42:44   File "/usr/lib/python3.8/email/Feedparser.py",line 27,in <module>
Sep  1 03:42:44     from email._policybase import compat32
Sep  1 03:42:44   File "/usr/lib/python3.8/email/_policybase.py",line 9,in <module>
Sep  1 03:42:44     from email.utils import _has_surrogates
Sep  1 03:42:44   File "/usr/lib/python3.8/email/utils.py",line 33,in <module>
Sep  1 03:42:44     from email._parseaddr import quote
Sep  1 03:42:44   File "/usr/lib/python3.8/email/_parseaddr.py",line 16,in <module>
Sep  1 03:42:44     import time,calendar
Sep  1 03:42:44   File "/home/vicinstofsport/bookingsystem/app_code/calendar.py",line 3,in <module>
Sep  1 03:42:44     from app_code.queries import Bookings,VisSessions
Sep  1 03:42:44 ModuleNotFoundError: No module named 'app_code'

解决方法

您的app_code目录在sys.path中位于Python 3.8的site-packages之前,因此它是Python首先看到的目录。更改sys.path中目录的顺序,它将找到另一个模块。但是,我认为更深层的问题是您的sys.path中有app_code而不是bookingsystem。您应该在所有代码所在的位置都有一个具有唯一名称的顶层模块,以便可以在导入中使用顶层模块,以确保导入正确的内容。