我的一位同事使用以下行实现shell脚本
output="$(venv/bin/python manage.py has_missing_migrations --quiet --settings=project.tests_settings 2>&1)"
这是完整的代码:
# Check missing migrations
output="$(venv/bin/python manage.py has_missing_migrations --quiet --settings=project.tests_settings 2>&1)"
[ $? -ne 0 ] \
&& ipoopoomypants "Migrations" "$output" \
|| irock "Migrations"
如果我运行脚本,我会获得
Running pre-commit checks:
[OK] anonymize_db ORM queries
[OK] Forbidden Python keywords
[OK] Forbidden JavaScript keywords
[OK] Forbidden HTML keywords
[FAIL] Migrations
COMMIT REJECTED: .git/hooks/pre-commit: line 88: venv/bin/python: No such file or directory
上述问题是它考虑到在项目本身内部创建了虚拟环境。但是,情况并非总是如此。从我所关心的,我使用virtualenvwrapper。因此,我的virtualenv不是./venv
,但在~/.virtualenvs/venv
。
问题:我怎么能以这样的方式修改上面的行,它会考虑路径./venv
和~/.virtualenvs/venv
?
您应该使用WORKON_HOME
环境变量来指出virtualenvs的位置而不是硬编码。