ModuleNotFoundError - импорт в Python при запуске uvicorn не разрешается

У меня есть простое приложение FastAPI, и я использовал pip и venv для управления окружающей средой. Когда я запускаю его через установленный пакет uvicorn, мой импорт не отображается. Он работает в терминале Python.

упрощенная структура папок: / venv / src main.py .. requirements.txt ..

requirements.txt

alembic==1.4.3
click==7.1.2
fastapi==0.61.1
FastAPI-SQLAlchemy==0.2.1
pydantic==1.6.1
SQLAlchemy==1.3.20
uvicorn==0.12.2
python-dotenv==0.14.0

В оболочке python после того, как я активирую среду, импортирующую fastapi_sqlalchemy, работает:

Python 3.8.5 (default, Aug 25 2020, 14:19:38) 
[Clang 11.0.3 (clang-1103.0.32.62)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import fastapi_sqlalchemy
>>> 

Но когда я запустил fastapi через uvicorn, приложение выдаст ошибку при импорте fastapi_sqlalchemy.

uvicorn src.main:app --reload                                                                                                                                                                                                     ✔  16:58:54
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [40567] using statreload
3.8.5 (default, Aug 25 2020, 14:19:38) 
[Clang 11.0.3 (clang-1103.0.32.62)]
Process SpawnProcess-1:
Traceback (most recent call last):
(... stacktrace here ...)

 File "./src/main.py", line 8, in <module>
import fastapi_sqlalchemy
ModuleNotFoundError: No module named 'fastapi_sqlalchemy'

src / main.py

import uvicorn
from fastapi import FastAPI
from dotenv import load_dotenv

import sys
print(sys.version)

import fastapi_sqlalchemy

Я не знаю, как сделать эту библиотеку видимой в контексте работы приложения uvicorn / fastapi.


person BlueConga    schedule 25.10.2020    source источник
comment
Как uvicorn узнает, что нужно использовать виртуальную среду?   -  person Peter Wood    schedule 25.10.2020
comment
Я действительно предполагал, что он работает в контексте среды выполнения терминала, которая должна использовать venv. Поэтому я ожидал, что он увидит импорт, как я могу сослаться в оболочке python.   -  person BlueConga    schedule 25.10.2020
comment
Как вы включили среду?   -  person Peter Wood    schedule 25.10.2020
comment
Не уверен, что ты имеешь в виду, Питер. Я запустил исходный код venv / bin / activate, но не уверен, что он принесет больше контекста, как я уже сказал - у меня нет проблем, когда я запускаю импорт в оболочке python.   -  person BlueConga    schedule 25.10.2020
comment
Хммм заходим в ту же папку с src и запускаем как src.main:app   -  person Yagiz Degirmenci    schedule 25.10.2020
comment
Именно так я и запускаю :(   -  person BlueConga    schedule 26.10.2020


Ответы (2)


В конце концов ... Я перезагрузил компьютер, и он заработал ????‍♂️

Спасибо всем, кто заглянул в это.

person BlueConga    schedule 26.10.2020

import fastapi_sqlalchemy 

должно быть

import FastAPI-SQLAlchemy
person Moha    schedule 27.10.2020