I'm using Alembic with SQLAlchemy to do a schema migration and a data migration. Since I have stored migration-specific dependencies in their own module within my project's main application myapp (as per Michael Bayer's recommendation), I have run into ModuleNotFoundErrors when running alembic current and alembic history. As suggested here, I have added the repository directory project to my system path by adding the following to env.py. # Add project to path. sys.path.append(os.getcwd()) This fixes the ModuleNotFoundError for alembic current, but not alembic history. Why do these two commands give different results? Repository structure: project │ alembic.ini │ db.sqlite │ ├───alembic │ │ env.py │ │ README │ │ script.py.mako │ │ │ └───versions │ 2b939015022a_create_athlete_table.py │ 3649f2977ae1_migrate_athletes_to_star_athletes.py │ └───myapp └───migrations star_athlete.py Migration script: """migrate athletes to star_athletes Revision ID: 3649f2977ae1 Revises: 2b939015022a Create Date: 2019-06-12 09:46:16.173048 """ from alembic import op import sqlalchemy as sa # This line causes ModuleNotFoundError from myapp.migrations.star_athlete import StarAthlete # revision identifiers, used by Alembic. revision = '3649f2977ae1' down_revision = '2b939015022a' branch_labels = None depends_on = None def upgrade(): print('upgrading...') def downgrade(): print('downgrading...') Continue reading...