我的一位同事使用以下行实现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
?
答案 0 :(得分:1)
你应该使用WORKON_HOME
环境变量指出virtualenvs的位置而不是硬编码。