In the file create_admin_user.py
I write: from models import User, Role, Session
At startup create_admin_user.py
everything is fine from PyCharm, but when I run it from the terminal with the command python create_admin_user.py
returns error: ModuleNotFoundError: No module named 'models'
Here is my models.__init__.py
:
from .base import Base, engine, Session
from .doctor importDoctor
from .specialization import Specialization
from .address import Address
from .user import User
from .file import Role
Base.metadata.create_all(engine)
Project structure:
src/
models/
__init__.py
scripts/
create_admin_user.py
What is the reason and how to fix it?
I tried writing from ..models import User, Role, Session
didn't help
You need to add the src
directory to your module search path by modifying the PYTHONPATH
environment variable or by directly modifying sys.path
.
Try running python -m site
before running your script to inspect the contents of sys.path
.
Here is an example:
$ python3 -m site
sys.path = [
'/home/users/Никита',
'/usr/lib64/python39.zip',
'/usr/lib64/python3.9',
'/usr/lib64/python3.9/lib-dynload',
'/usr/lib64/python3.9/site-packages',
'/usr/lib/python3.9/site-packages',
]
USER_BASE: '/home/users/Никита/.local' (exists)
USER_SITE: '/home/users/Никита/.local/lib/python3.9/site-packages' (doesn't exist)
ENABLE_USER_SITE: True
$ PYTHONPATH='/home/users/Никита/projects/YourProject/src' python3 -m site
sys.path = [
'/home/users/Никита',
'/home/users/Никита/projects/YourProject/src',
'/usr/lib64/python39.zip',
'/usr/lib64/python3.9',
'/usr/lib64/python3.9/lib-dynload',
'/usr/lib64/python3.9/site-packages',
'/usr/lib/python3.9/site-packages',
]
USER_BASE: '/home/users/Никита/.local' (exists)
USER_SITE: '/home/users/Никита/.local/lib/python3.9/site-packages' (doesn't exist)
ENABLE_USER_SITE: True
$ PYTHONPATH='/home/users/Никита/projects/YourProject/src' python create_admin_user.py
Here is a link to the official Python documentation that discusses the initialization of the module search path: https://docs.python.org/3/library/sys_path_init.html