aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/language/python.rb
diff options
context:
space:
mode:
authorTim D. Smith2016-07-31 11:59:30 -0700
committerGitHub2016-07-31 11:59:30 -0700
commita5a930c48bec7bb7bdc6bbf7e0fe7fe5f564a7fe (patch)
treeb07bc8c93d9c8b6f7eaed3246b681593793f6497 /Library/Homebrew/language/python.rb
parent7a00f03c92607f65336be0285584e8351ad8a73a (diff)
downloadbrew-a5a930c48bec7bb7bdc6bbf7e0fe7fe5f564a7fe.tar.bz2
Allow virtualenvs to find Python bindings provided by deps (#608)
Allow virtualenvs to find Python bindings provided by deps Closes #603.
Diffstat (limited to 'Library/Homebrew/language/python.rb')
-rw-r--r--Library/Homebrew/language/python.rb18
1 files changed, 16 insertions, 2 deletions
diff --git a/Library/Homebrew/language/python.rb b/Library/Homebrew/language/python.rb
index 53aae2eb4..4249a911c 100644
--- a/Library/Homebrew/language/python.rb
+++ b/Library/Homebrew/language/python.rb
@@ -122,6 +122,20 @@ module Language
ENV.refurbish_args
venv = Virtualenv.new formula, venv_root, python
venv.create
+
+ # Find any Python bindings provided by recursive dependencies
+ formula_deps = formula.recursive_dependencies
+ xy = Language::Python.major_minor_version python
+ pth_contents = formula_deps.map do |d|
+ next if d.build?
+ dep_site_packages = Formula[d.name].opt_lib/"python#{xy}/site-packages"
+ next unless dep_site_packages.exist?
+ "import site; site.addsitedir('#{dep_site_packages}')\n"
+ end
+ if pth_contents.any?
+ (venv_root/"lib/python#{xy}/site-packages/homebrew_deps.pth").write pth_contents.join
+ end
+
venv
end
@@ -223,8 +237,8 @@ module Language
def do_install(targets)
targets = [targets] unless targets.is_a? Array
@formula.system @venv_root/"bin/pip", "install",
- "-v", "--no-deps", "--no-binary", ":all:",
- *targets
+ "-v", "--no-deps", "--no-binary", ":all:",
+ "--ignore-installed", *targets
end
end # class Virtualenv
end # module Virtualenv