Модуль: Language::Python
- Расширяет:
- Utils::Output::Mixin
- Определён в:
- language/python.rb
Обзор
Вспомогательные функции для формул Python.
Определено в пространстве имён
Модули: Shebang, Virtualenv
Краткое описание методов класса свернуть
- .each_python(build, &block) ⇒ void приватный
- .homebrew_site_packages(python = "python3.7") ⇒ Pathname приватный
- .in_sys_path?(python, path) ⇒ Boolean приватный
- .major_minor_version(python) ⇒ Version? приватный
- .reads_brewed_pth_files?(python) ⇒ Boolean приватный
- .site_packages(python = "python3.7") ⇒ String приватный
- .user_site_packages(python) ⇒ Pathname приватный
Методы, включённые из Utils::Output::Mixin
issue_reporting_message, odebug, odeprecated, odie, odisabled, ofail, oh1, oh1_title, ohai, ohai_title, onoe, opoo, opoo_outside_github_actions, opoo_without_github_actions_annotation, pretty_deprecated, pretty_disabled, pretty_duration, pretty_install_status, pretty_installed, pretty_uninstalled, pretty_upgradable, pretty_warning
Подробное описание методов класса
.each_python(build, &block) ⇒ void
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
Этот метод возвращает неопределённое значение.
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | # File 'language/python.rb', line 43 def self.each_python(build, &block) original_pythonpath = ENV.fetch("PYTHONPATH", nil) pythons = { "python@3" => "python3", "pypy" => "pypy", "pypy3" => "pypy3" } pythons.each do |python_formula, python| python_formula = Formulary.factory(python_formula) next if build.without? python_formula.to_s version = major_minor_version python ENV["PYTHONPATH"] = if python_formula.latest_version_installed? nil else homebrew_site_packages(python).to_s end block&.call python, version end ENV["PYTHONPATH"] = original_pythonpath end |
.homebrew_site_packages(python = "python3.7") ⇒ Pathname
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
24 25 26 | # File 'language/python.rb', line 24 def self.homebrew_site_packages(python = "python3.7") HOMEBREW_PREFIX/site_packages(python) end |
.in_sys_path?(python, path) ⇒ Boolean
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
83 84 85 86 87 88 89 | # File 'language/python.rb', line 83 def self.in_sys_path?(python, path) script = <<~PYTHON import os, sys [os.path.realpath(p) for p in sys.path].index(os.path.realpath("#{path}")) PYTHON quiet_system python, "-c", script end |
.major_minor_version(python) ⇒ Version?
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
16 17 18 19 20 21 | # File 'language/python.rb', line 16 def self.major_minor_version(python) version = `#{python} --version 2>&1`.chomp[/(\d\.\d+)/, 1] return unless version Version.new(version) end |
.reads_brewed_pth_files?(python) ⇒ Boolean
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
64 65 66 67 68 69 70 71 72 73 74 75 | # File 'language/python.rb', line 64 def self.reads_brewed_pth_files?(python) return false unless homebrew_site_packages(python).directory? return false unless homebrew_site_packages(python).writable? probe_file = homebrew_site_packages(python)/"homebrew-pth-probe.pth" begin probe_file.atomic_write("import site; site.homebrew_was_here = True") with_homebrew_path { quiet_system python, "-c", "import site; assert(site.homebrew_was_here)" } ensure probe_file.unlink if probe_file.exist? end end |
.site_packages(python = "python3.7") ⇒ String
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
29 30 31 32 33 34 35 | # File 'language/python.rb', line 29 def self.site_packages(python = "python3.7") if (python == "pypy") || (python == "pypy3") "site-packages" else "lib/python#{major_minor_version python}/site-packages" end end |
.user_site_packages(python) ⇒ Pathname
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
78 79 80 | # File 'language/python.rb', line 78 def self.user_site_packages(python) Pathname.new(`#{python} -c "import site; print(site.getusersitepackages())"`.chomp) end |
© 2009–present Homebrew contributors
Licensed under the BSD 2-Clause License.
https://docs.brew.sh/rubydoc/Language/Python.html