VS Code中FastAPI项目无法导入自定义utilities模块求助
FastAPI项目模块导入失败问题排查
在VS Code中开发FastAPI项目时,执行启动命令uvicorn Project_name:app触发ModuleNotFoundError,错误日志如下:
Traceback (most recent call last): File "C:\Users\Saoni_Deb\Anaconda3\envs\pycaret_venv8\lib\runpy.py", line 194, in _run_module_as_main return _run_code(code, main_globals, None, File "C:\Users\Saoni_Deb\Anaconda3\envs\pycaret_venv8\lib\runpy.py", line 87, in _run_code exec(code, run_globals) File "C:\Users\Saoni_Deb\Anaconda3\envs\pycaret_venv8\Scripts\uvicorn.exe\__main__.py", line 7, in <module> File "C:\Users\Saoni_Deb\Anaconda3\envs\pycaret_venv8\lib\site-packages\click\core.py", line 1128, in __call__ return self.main(*args, **kwargs) File "C:\Users\Saoni_Deb\Anaconda3\envs\pycaret_venv8\lib\site-packages\click\core.py", line 1053, in main rv = self.invoke(ctx) File "C:\Users\Saoni_Deb\Anaconda3\envs\pycaret_venv8\lib\site-packages\click\core.py", line 1395, in invoke return ctx.invoke(self.callback, **ctx.params) File "C:\Users\Saoni_Deb\Anaconda3\envs\pycaret_venv8\lib\site-packages\click\core.py", line 754, in invoke return __callback(*args, **kwargs) File "C:\Users\Saoni_Deb\Anaconda3\envs\pycaret_venv8\lib\site-packages\uvicorn\main.py", line 437, in main run(app, **kwargs) File "C:\Users\Saoni_Deb\Anaconda3\envs\pycaret_venv8\lib\site-packages\uvicorn\main.py", line 463, in run server.run() File "C:\Users\Saoni_Deb\Anaconda3\envs\pycaret_venv8\lib\site-packages\uvicorn\server.py", line 60, in run return asyncio.run(self.serve(sockets=sockets)) File "C:\Users\Saoni_Deb\Anaconda3\envs\pycaret_venv8\lib\asyncio\runners.py", line 44, in run return loop.run_until_complete(main) File "C:\Users\Saoni_Deb\Anaconda3\envs\pycaret_venv8\lib\asyncio\base_events.py", line 616, in run_until_complete return future.result() File "C:\Users\Saoni_Deb\Anaconda3\envs\pycaret_venv8\lib\site-packages\uvicorn\server.py", line 67, in serve config.load() File "C:\Users\Saoni_Deb\Anaconda3\envs\pycaret_venv8\lib\site-packages\uvicorn\config.py", line 458, in load self.loaded_app = import_from_string(self.app) File "C:\Users\Saoni_Deb\Anaconda3\envs\pycaret_venv8\lib\site-packages\uvicorn\importer.py", line 24, in import_from_string raise exc from None File "C:\Users\Saoni_Deb\Anaconda3\envs\pycaret_venv8\lib\site-packages\uvicorn\importer.py", line 21, in import_from_string module = importlib.import_module(module_str) File "C:\Users\Saoni_Deb\Anaconda3\envs\pycaret_venv8\lib\importlib\__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1014, in _gcd_import File "<frozen importlib._bootstrap>", line 991, in _find_and_load File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 671, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 843, in exec_module File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed File "C:\Users\Saoni_Deb\Documents\GitHub\project_path.\project_name\__init__.py", line 14, in <module> from .routes import integration_router File "C:\Users\Saoni_Deb\Documents\GitHub\project_path.\project_name\routes\__init__.py", line 12, in <module> from .user import user File "C:\Users\Saoni_Deb\Documents\GitHub\project_path.\project_name\routes\user.py", line 16, in <module> from ..config.db import conn, session File "C:\Users\Saoni_Deb\Documents\GitHub\project_path.\project_name\config\db.py", line 20, in <module> from ..utilities.logger import Logger File "C:\Users\Saoni_Deb\Documents\GitHub\project_path.\project_name\utilities\logger.py", line 17, in <module> from utilities.logger_config import config ModuleNotFoundError: No module named 'utilities'
项目目录结构
Project_name ├── Utilities │ ├── __init__.py │ ├── logger.py │ └── logger_config.py └── Other module ├── file1.py └── file2.py
logger.py中的导入代码
import logging.config from utilities.logger_config import config
可能的原因
- 模块名称大小写不匹配:项目目录为
Utilities(首字母大写),但导入时使用utilities(全小写)。Windows文件系统不区分大小写,但Python模块导入在部分场景下会严格区分,导致无法匹配到目标模块。 - 导入方式错误:
logger.py位于Utilities目录内,应该使用相对导入from .logger_config import config,而非绝对导入from utilities.logger_config import config。绝对导入会从全局Python路径查找,而非项目内部目录。 - 项目根目录不在Python搜索路径:执行
uvicorn命令时的当前工作目录不是项目根目录,或项目根目录未被添加到sys.path中,导致Python无法识别自定义模块。 - 虚拟环境冲突或配置错误:虚拟环境中可能存在同名第三方包
utilities,导致Python优先导入第三方包;或是VS Code中配置的Python解释器路径错误,未指向当前项目的虚拟环境。 - init.py文件异常:
Utilities目录下的__init__.py缺失或内容异常,导致Python无法将该目录识别为可导入的模块。
问题解决
更新:已通过卸载冲突包、重新配置Python解释器路径和环境解决该问题。
内容的提问来源于stack exchange,提问作者shaaonee
相关产品推荐
相关产品推荐

