53 lines
1.6 KiB
Ruby
Raw Normal View History

2014-03-07 18:03:54 +00:00
require "utils.rb"
module Language
module Python
def self.major_minor_version python
version = /\d\.\d/.match `#{python} --version 2>&1`
return unless version
Version.new(version.to_s)
end
def self.homebrew_site_packages(version="2.7")
HOMEBREW_PREFIX/"lib/python#{version}/site-packages"
end
2014-03-07 18:03:54 +00:00
def self.each_python build, &block
original_pythonpath = ENV["PYTHONPATH"]
["python", "python3"].each do |python|
next if build.without? python
version = self.major_minor_version python
ENV["PYTHONPATH"] = if Formulary.factory(python).installed?
2014-03-07 18:03:54 +00:00
nil
else
homebrew_site_packages(version)
2014-03-07 18:03:54 +00:00
end
block.call python, version if block
end
ENV["PYTHONPATH"] = original_pythonpath
end
def self.reads_brewed_pth_files? python
version = major_minor_version python
return unless homebrew_site_packages(version).directory?
probe_file = homebrew_site_packages(version)/"homebrew-pth-probe.pth"
probe_file.atomic_write("import site; site.homebrew_was_here = True")
result = quiet_system python, "-c", "import site; assert(site.homebrew_was_here)"
probe_file.unlink
result
end
def self.user_site_packages python
Pathname.new(`#{python} -c "import site; print(site.getusersitepackages())"`.chomp)
end
def self.in_sys_path? python, path
script = <<-EOS.undent
import os, sys
[os.path.realpath(p) for p in sys.path].index(os.path.realpath("#{path}"))
EOS
quiet_system python, "-c", script
end
2014-03-07 18:03:54 +00:00
end
end