diff --git a/Library/Homebrew/exceptions.rb b/Library/Homebrew/exceptions.rb index 142688cfd0..f7a442eb08 100644 --- a/Library/Homebrew/exceptions.rb +++ b/Library/Homebrew/exceptions.rb @@ -320,6 +320,18 @@ class FormulaConflictError < RuntimeError end end +class FormulaUnknownPythonError < RuntimeError + def initialize(formula) + super <<~EOS + The version of Python to use with the virtualenv in the `#{formula.full_name}` formula + cannot be guessed automatically because a recognised Python dependency could not be found. + + If you are using a non-standard Python depedency, please add `:using => "python@x.y"` to + `virtualenv_install_with_resources` to resolve the issue manually. + EOS + end +end + class FormulaAmbiguousPythonError < RuntimeError def initialize(formula) super <<~EOS diff --git a/Library/Homebrew/language/python.rb b/Library/Homebrew/language/python.rb index 75d79a6f8d..c3538f0ddf 100644 --- a/Library/Homebrew/language/python.rb +++ b/Library/Homebrew/language/python.rb @@ -182,6 +182,7 @@ module Language if python.nil? pythons = %w[python python3 python@3 python@3.7 python@3.8 pypy pypy3] wanted = pythons.select { |py| needs_python?(py) } + raise FormulaUnknownPythonError, self if wanted.empty? raise FormulaAmbiguousPythonError, self if wanted.size > 1 python = wanted.first