用例:
我正在尝试创建一个迁移脚本,该脚本将创建一个表(这将建立多对多关系),然后使用数据库中的外键填充该表。
为此,我试图加载我的烧瓶应用程序 ORM 模型,以便我可以在我的迁移脚本中使用它们。
目录结构
/home/alord/git/my_project/ # project directory
/home/alord/git/my_project/alembic_testing # migration directory
/home/alord/git/my_project/my_project #requirement of flask modules
/home/alord/git/my_project/runserver.py # script that starts development server
/home/alord/git/my_project/alembic.ini # alembic configuration
/home/alord/git/my_project/development_config.py # development server configuration
如果我运行 alembic upgrade +1
import os
print os.getcwd()
print os.path.dirname(os.path.realpath(__file__))
在
/home/alord/git/my_project/alembic_testing/env.py
我明白了
/home/alord/git/my_project
/home/alord/git/my_project/alembic_testing
我在做什么
我在放置
import os.path
sys.path.append(
os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir)))
import my_project
在我的升级脚本中,然后运行命令
alembic upgrade +1
我收到一个错误的堆栈跟踪
ImportError: No module named my_project
如果没有此尝试导入,表升级和降级功能将正常运行。
我的期望
我希望能够导入包,更重要的是 *my_project.models* 以便我可以使用 ORM 来填充我的新表。
注意: 我不能使用相对包包含,因为我正在运行 alembic 而不是调用 python。因此, python -m 参数对我没有用。