Virtualenv有多个可能的位置

时间:2017-12-21 19:39:19

标签: django bash virtualenv virtualenvwrapper

我的一位同事使用以下行实现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

1 个答案:

答案 0 :(得分:1)

你应该使用WORKON_HOME环境变量指出virtualenvs的位置而不是硬编码。