#python #python-3.x #pip
#python #python-3.x #pip
Вопрос:
У меня есть проект, созданный с помощью FastApi. Проект имеет такую структуру (упрощенную):
myproject/
src/
app/
db/
endpoints/
schemas/
__init__.py
config.py
main.py
migrations/
tests/
venv/
requirements.txt
requirements.dev.txt
setup.py
dockerfile
README.md
Я устанавливаю проект, используя виртуальную среду:
cd src
python -m venv ./venv
pip install -r requirements.txt -r requirements.dev.txt
Когда я запускаю python app/main.py
из src/
, возникает исключение:
Ошибка ModuleNotFoundError: нет модуля с именем ‘app’
Исследуя с помощью git, я обнаружил, что в старой версии я использовал для установки зависимостей другие инструкции:
cd src
python -m venv ./venv
pip install -e . -r requirememts.dev.txt
Я скопировал установку pip с помощью -e
, и она снова заработала. Также я добавил строки в main.py
:
import sys
print(sys.path)
и обнаружил, что результаты разные, вот результаты:
с pip install -r <...>
> python app/main.py
['D:\Projects\myproject\src\app',
'D:\Projects\myproject\src\venv',
'D:\Projects\myproject\src\venv\lib\site-packages', .....]
Traceback (most recent call last):
File "app/main.py", line 7, in <module>
from app.config import settings
ModuleNotFoundError: No module named 'app'
с pip install -e <...>
> python app/main.py
['D:\Projects\myproject\src\app',
'D:\Projects\myproject\src\venv',
'D:\Projects\myproject\src\venv\lib\site-packages',
'd:\projects\myproject\src', ....]
<... Fast api amp; uvicorn logs here>
Почему это происходит?